Я думаю, что это проще объяснить с помощью кода, поэтому вот несколько фрагментов кода Отредактированы, чтобы было легко увидеть важные части
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....
.
У меня возникла проблема с обнаружением того, где я ошибся с моим макетом, чтобы вызвать эту ошибку тайм-аута