为了账号安全,请及时绑定邮箱和手机立即绑定

如何在使用 Jest 进行单元测试时对函数内的 promise 进行代码覆盖

如何在使用 Jest 进行单元测试时对函数内的 promise 进行代码覆盖

慕田峪7331174 2021-10-29 16:13:01
在使用 jest 进行单元测试时,如何编写代码覆盖然后捕获函数内的 Promise 函数?请看下面的代码。服务.jsexport const userLogin = data => {  return AjaxService.post(    "http://localhost/3000/signin", data  ).then(    res => {      return res.data;    },    error => {      return error.response.data;    }  );};AjaxService.jsexport const AjaxService = {  post: (url, data, headers) => {    return axios({      method: "POST",      url: url,      headers: headers || { "content-type": "application/json" },      data: data    });  }}示例.jsclass Login extends Component {  handleSubmit = (event) => {    if (this.props.handleSubmit) this.props.handleSubmit();     this.setState({isLoggedIn: true})    userLogin().then((res) => {     // when promise resolve     var response = res;    }, (err) => {      // when promise reject        var error = err;    })  }  render() {   return (    <form id="login-form" onSubmit={(e) => this.handleSubmit(e)} >     <input type="username" />     <input type="password" />     <button type="submit">Login</button>    </form>   )  }}示例.test.jsit("test login form submit ", () => {    wrapper = shallow(<Login />);    let instance = wrapper.instance(); // get class instance    instance.handleSubmit(); // will trigger component method    let actualVal = wrapper.state().isLoggedIn; // get state key value    expect(true).to.eql(actualVal);  });--coverage在 Jest 中使用生成覆盖率报告后我们可以看到 promise 成功和错误函数中的代码没有作为单元测试的一部分被覆盖。所以请帮忙介绍一下。谢谢。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信