Тестирование преобразователя graphql с насмешкой в ​​ts, asyn c ошибка тайм-аута обратного вызова - PullRequest
0 голосов
/ 18 июня 2020

Я думаю, что это проще объяснить с помощью кода, поэтому вот несколько фрагментов кода Отредактированы, чтобы было легко увидеть важные части

const Query: QueryResolvers = {
  ...
  roomById: async (...): Promise<Room> => {

    const rooms: RoomModel = await queryRoomsById(...)

    const requestedRoom: EndRoom = finalizeRooms(..., rooms);
    return requestedChatRoomPage;
  }

Проще говоря, это один из преобразователей запросов, которым я являюсь пытаюсь проверить. В этом случае функция queryRoomsById(...) потребует фактического вызова службы в реальном времени, поэтому я хочу имитировать ответ от этого. Предположим, у меня есть допустимая структура const mockResponse, которая представляет собой просто тип массива, состоящий из RoomModel объектов

import { queryRoomsById } from '../resolvers/queries';
import { mockResponse } from './mock-responses';
jest.mock ('../resolvers/queries', () => ({
  queryRoomsById: jest.fn(),
}));

const mockedQuery = queryRoomsById as jest.Mock<Promise<RoomModel[]>>
...

 it('rooms query', async () => {
    mockedQuery.mockImplementation(() : Promise<RoomModel[]> => {
      return new Promise(() => {
        mockResponse
       })
    })

    const roomQuery = await query({
      query: validQueryHere,
      variables: {...},
    });
    expect(roomQuery).resolves.toMatchSnapshot();
  });

Насколько я понимаю, roomQuery (он настроен правильно, подтвержден другими тестами) при выполнении , попадет в этот код преобразователя. Имеющаяся у меня фиктивная реализация будет ответом в const rooms: RoomModel = await queryRoomsById(...), поэтому я пытаюсь проверить, как requestedChatRoomPage выглядит в итоге. Однако я продолжаю получать ошибку Timeout - Async callback was not invoked within the ... timeout.....

У меня возникла проблема с обнаружением того, где я ошибся с моим макетом, чтобы вызвать эту ошибку тайм-аута

...