typescript - Cum pot testa cu ce variabile a fost apelat un hook Apollo useQuery folosind Enzyme?


Am o interogare simplă Apollo pe care vreau să o rulez. În unele cazuri, ar trebui să transmit un argument opțional setat pe adevărat. În altele, argumentul nu va fi furnizat și ar trebui să fie implicit pe fals.

Încerc să configurez un test în jest/enzyme care să confirme că acesta rulează cu variabilele implicite corecte, dar întâmpin dificultăți în a face acest lucru. Iată ce am până acum. Numele variabilelor sunt modificate pentru a proteja confidențialitatea/numele companiei.

Fișierul de test: import * as ApolloClient din '@apollo/client'; import { makeUseQuery } din '../../../../test/mocks/graphql';

import {useMyQuery} from './useMyQuery'

const querySpy = jest.spyOn(ApolloClient,'useQuery')

  const defaultQuery = {
    userKey: 'mock-user_key',
    variableName: false
  }
describe('useMyQuery()',()=>{

  beforeEach(() => {
    jest.clearAllMocks();
  });

    it('should default to variableName = false',()=>{
        querySpy.mockReturnValueOnce(makeUseQuery());

        useMyQuery()

        expect(querySpy).toHaveBeenCalledWith(defaultQuery)
        //Returns the arguments for the query as well as extra boilerplate Apollo data, such as alias, selectionSet, fetchPolicy, etc.


   })

})

Cârligul pe care încerc să-l testez:

import { useQuery } from '@apollo/client';
import {useAuth} from '@company_name/auth'

import {
  MyQuery,
  MyQueryVariables,
} from '../__generated__/MyQuery';
import { FETCH_MY_QUERY } from '../MyQueryRoute.graphql';

export const useMyQuery = (myVariable?: boolean) => {
  const { userKey } = useAuth();

  return useQuery<MyQuery, MyQueryVariables>(
    FETCH_MY_QUERY,
    {
      variables: {
        userKey: userKey!,
        myVartiable: myVariable ?? false,
      },
      skip: !userKey,
      fetchPolicy: 'no-cache',
    }
  );
};

Cum pot modifica testul meu astfel încât să verifice valoarea lui myVariable și să confirme dacă este adevărat sau fals? (condițiile de autentificare sunt acoperite în alte teste care sunt în afara domeniului meu)