将Jest与Expect.js和酶一起使用我正在测试HOC,它会用特殊的道具丰富组件。此HOC的功能之一是它调用getter api promise并通过道具传递此promise的结果。我目前正在测试loaded
和loading
标志。
它正在进行中,但请在此处查看HOC:
我目前正在进行的测试可以在这里找到:
这是一个片段:
it("Provides proper loading flags when done", async () => {
MountedDummyFormWithAuth = CreateDummyFormWithAuth();
setTimeout(()=>{}, 3050);
await waitForExpect(()=>{
let testForm = MountedDummyFormWithAuth.find('TestFormEdit');
console.log(testForm.props());
expect(testForm.prop('loaded')).toEqual(true);
expect(testForm.prop('loading')).toEqual(false);
});
});
模拟API只是带有返回对象的超时功能的简单承诺。
返回此对象后,HOC将通过prop更新TestFormComponent
。因此loading
=否,loaded
= true。由于某些原因,testForm
实例的道具仍设置为加载。我在实际环境中使用了完全相同的设置来使用完全相同的组件,并且可以正常工作。我的猜测是:
a)由于我在testForm
方法中无法理解的某些行为,mount
实例未更新。
b)尚未等待此设置的超时,并且waitForExpect。
是否有测试此情况的正确方法?组件正在等待要实现的承诺,因此应在过渡期间将其道具设置为加载,然后,一旦实现承诺,HOC就会更新加载道具。所有这些都应该在1500ms内发生。
我猜想我会像动画那样测试它,该动画的组件样式必须在0ms处匹配bar然后在1500ms处匹配foo。但是我不知道该如何测试...任何帮助将不胜感激。