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

如何使用 Chai 和 mocha 在 Async await Node.js 单元测试代码中

如何使用 Chai 和 mocha 在 Async await Node.js 单元测试代码中

qq_遁去的一_1 2022-01-07 19:29:03
我正在使用下面的测试用例来测试 Mocha 和 Chai 中的服务,它工作正常。describe('Google ', () => {  it('POST: Google.', async () => {    const results = await readGoogle.execute(jmsPayload);    console.log(`Final Result : ${results.toString()}`);  });});对于上述代码,我需要处理一种情况。实际上我有时会从服务类 readGoogle.execute 方法中得到这个异常。 TypeError: Cannot read property 'status' of undefined这是从 readGoogle.execute 方法的角度来看的。但我的要求是我需要通过上述测试用例,即使我从 readGoogle.execute await 方法中得到错误。1)我无权访问 readGoogle.execute 方法,所以我无法处理那里的未定义检查。仅在我的测试用例中要做的任何事情。2)我return true,在上面尝试过,'it'但测试用例仍然失败。3)我也试过了,断言(真);在上面it,但测试用例仍然失败。任何人都可以向我建议一些我可以始终通过上述 test_case 的想法(即使在成功和失败的情况下)?提前致谢。
查看完整描述

1 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

据我了解,您对上面的readGoogle.execute调用进行了测试,并且由于它是外部资源/api,因此有时会出现异常,这是正确的行为。


在这种情况下,我建议将此调用包装在 try-block 中。


describe('Google ', () => {

  it('POST: Google.', async () => {

    try {

        const results = await readGoogle.execute(jmsPayload);

        console.log(`Final Result : ${results.toString()}`);


        //maybe some other assertion here about result object.

    } catch (e) {

        assert.equal(e.name, 'TypeError');     

    }

  });

});

或者在 catch 中做出一些其他断言,以确保这正是您预期的错误。


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号