Есть компонент, который я использую в кеше, который я создал в apollo, который хранится в client
.
В какой-то момент в качестве обратного вызова со входа я выполняю следующий вызов:
const originalName = client.readQuery<NamesCached>({ query: NamesCached })!.names
это возвращает непосредственно массив объектов.
Однако я не знаю, как проверить это в моем компоненте. Мое первое предположение состояло в том, чтобы насмехаться исключительно над client.readQuery
, чтобы вернуть мне массив из моего __fixtures__
. Это не сработало.
Вот мой лучший способ издеваться над ним:
it('filters the name in the search', () => {
jest.doMock('@/ApolloClient', () => ({
readQuery: jest.fn()
}))
const client = require('@/ApolloClient')
client.readQuery.mockImplementation(()=> Promise.resolve(names()))
const { getByPlaceholderText, queryByText } = renderIndexNames()
const input = getByPlaceholderText('Search…')
fireEvent.change(input, { target: { value: 'Second Name' } })
expect(queryByText('Title for a name')).not.toBeInTheDocument()
})
Для этого теста я использую react-testing-library
. Это мой лучший снимок ...
jest.doMock('@/ApolloClient', () => ({
readQuery: jest.fn()
}))
const client = require('@/ApolloClient')
client.readQuery.mockImplementation(()=> Promise.resolve(names()))
Важно опираться на один ИТ, а не на верх, поскольку есть другие тесты, которые используют клиент и работают правильно.
С этим я мог бы посмеяться в тесте, когда invokin client.readQuery()
, но затем в самом компоненте возвращается в исходное состояние
Моя цель
Найдите способ, с помощью которого client.readQuery
можно поиздеваться, и верните данные, которые я ищу. Я думал, что в насмешках, но любое другое решение, которое может работать для одного или группы тестов (без всех), будет более чем приветствоваться.
Я тоже пытался насмехаться сверху, но потом другие терпели неудачу, и я не мог воспроизвести, чтобы вернуться к реальной реализации