首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Jest / Enzyme测试异步功能

使用Jest / Enzyme测试异步功能
EN

Stack Overflow用户
提问于 2019-05-23 02:57:07
回答 1查看 111关注 0票数 0

尝试运行以下测试用例:

代码语言:javascript
复制
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});
}    

这是我到目前为止对我的测试的看法:

代码语言:javascript
复制
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和酶

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56263295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档