Relation between re-render and useQuery

I have a simple hook which calls useQuery to get data from a graphql query.

export function useGetUser () {
    const { data, refetch, error, loading } = useQuery(GET_USER, {client, fetchPolicy: 'cache-and-network'})
    return {data, refetch}
}

Now in my unit tests, I am using react-hooks-testing library and calling the hook like so :

    const { result, waitForNextUpdate, rerender } = renderHook(() => useGetUser())
    await waitForNextUpdate();

    act(() => {
        rerender()
    })
    await waitForNextUpdate();

Now in this case, if I am sure that the data on the backend is changing between the 2 function calls, why don’t I see it as an update in the hook ?
Does calling useQuery not have a 1:1 relation with the actual network calls?

My intuition around this was that on every render, useQuery would reach out to the server and get new data.
In my test, if I do a refetch manually, then I do get the updated results at the end.

The useQuery hook will make one fetch request on initial load, and will not refetch on subsequent renders.

The useQuerey hook will trigger a re-render when it receives a response from the graphql backend (whether that response is data or an error).

This is my understanding.

@Tyler : Thanks!

I think I was confused by Apollo documentation and thought that every render will call useQuery which will in-turn will reach out to the server based on the fetchPolicy.

For reaching out to the network again, Polling and Refetching seem like the way to go.