Возможно использование классического обратного вызова сработает, см. Ниже.
Я не уверен насчет общей стратегии тестирования с использованием apollo здесь.Это может быть что-то, где тесты пользовательского интерфейса будет намного лучше.Когда вы хотите протестировать свои компоненты в модульных тестах (которые, например, мы очень редко выполняем на работе), тестируйте только сами компоненты, а не запросы внутри.С новым рендерингом prop API React Apollo это стало намного сложнее, но, на мой взгляд, это потому, что это очень непопулярно для модульных тестов компонентов в этом смысле.В качестве альтернативы вы можете взглянуть на реагирующая библиотека тестирования , которая имеет функцию, которая называется waitForElement и ведет себя немного больше, чем утверждения в тестах пользовательского интерфейса, как в Cypress.
it('exists', done => {
let wrapper = await mount(
(
<TestProvider>
<Query query={gql`...`}>
{
({data:{something}})=> {
process.nextTick(check);
return <CustomComponent something={something} />;
}
</Query>
</TestProvider>
)
);
function check() {
expect(wrapper.find(CustomComponent).exists()).to.be.true
done();
}
})