【发布时间】:2018-11-12 04:40:00
【问题描述】:
你能告诉我如何用 Enzyme 测试 apollo 查询组件吗?该查询使用isomorphic-fetch 从数据库中获取数据。这是我的示例测试代码:
describe('Query', async () => {
it('exists', async () => {
let wrapper = await mount(
(
<TestProvider>
<Query query={gql`...`}>
{
({data:{something}})=>
<CustomComponent something={something} />
}
</Query>
</TestProvider>
)
);
// return false
expect(wrapper.find(CustomComponent).exists()).to.be.true
})
});
为什么 Enzyme 在 Query 组件中找不到 CustomComponent?但是,当孩子不是函数时,以下示例将起作用:
describe('Component', async () => {
it('exists', async () => {
let wrapper = await mount(
(
<TestProvider>
<div><CustomButton/></div>
</TestProvider>
)
);
// return true
expect(wrapper.find(CustomButton).exists()).to.be.true
})
});
【问题讨论】:
-
调试它的一种方法是记录包装对象或使用调试器来检查它。然后您可以确认该元素实际上没有被渲染。
-
@Herku,问题是我找不到等待阿波罗在
expect函数触发之前完成从服务器获取数据并渲染的方法。
标签: reactjs mocha.js graphql enzyme react-apollo