尝试运行以下测试用例:
async getParents() {
const { user, services, FirmId } = this.props;
let types = await Models.getAccounts({ user, services, firmId: FirmId });
let temp = types.map((type) => {
if(this.state.Parent_UID && this.state.Parent_UID.value === type.Account_UID) {
this.setState({Parent_UID: {label: type.AccountName, value: type.Account_UID}})
}
return {
label: type.AccountName,
value: type.Account_UID,
}
})
this.setState({ParentOptions: temp});
}
这是我到目前为止对我的测试的看法:
beforeEach(() => wrapper = mount(<MemoryRouter keyLength={0}><AccountForm {...baseProps} /></MemoryRouter>));
it('Test getParents function ',async() => {
wrapper.setProps({
user:{},
services:[],
FirmId:{},
})
wrapper.find('AccountForm').setState({
SourceOptions:[[]],
Parent_UID: [{
label:[],
value:[],
}],
});
wrapper.update();
await
expect(wrapper.find('AccountForm').instance().getParents()).toBeDefined()
});
如果我试图让这个ToEqual()它期望一个promise而不是一个anobject,我还能在这个测试中添加什么来正常工作。
目标:确保函数被正确调用。测试目前正在通过,并且测试覆盖率略有增加。在React Js中使用Jest和酶
发布于 2019-05-23 08:00:02
可以将await放在async方法之前,如下所示:
await wrapper.find('AccountForm').instance().getParents()
并比较状态是否已更改。
换句话说,如果可以模拟你的API请求,因为这是一个测试,那么你不需要正确的API,但知道函数是否正确地调用了API,以及返回处理是否正确。
并且,你可以像这样窥探这个函数:
const spy = jest.spyOn(wrapper.find('AccountForm').instance(), 'getParents');
和campare,如果函数是由某个操作触发的,则调用它们:
expect(spy).toBeCalled()
https://stackoverflow.com/questions/56263295
复制相似问题