尝试为以下项目运行测试用例:
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()期望一个承诺而不是一个对象,那么我还可以在此测试中添加什么才能使其正常工作。
目标:确保正确调用了函数。目前该测试已通过,测试覆盖率略有增加。 将Jest和Enzyme用于React Js
答案 0 :(得分:1)
您可以将await放在async方法之前,例如:
await wrapper.find('AccountForm').instance().getParents()
比较状态是否更改。
以另一种方式,如果可以模拟您的API请求,因为这是一个测试,则您不需要正确的API,但是知道该函数是否正确调用了API,以及返回处理是否正确。
而且,您可以监视以下功能:
const spy = jest.spyOn(wrapper.find('AccountForm').instance(), 'getParents');
和Campare(如果通过某些操作触发了该函数):
expect(spy).toBeCalled()