如何使用Chai和Mocha在Async await中强制通过测试用例Node.js单元测试代码

时间:2019-11-22 06:52:41

标签: javascript node.js unit-testing mocha chai

我正在使用下面的测试用例在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)我也尝试过,assert(true); it中的内容,但测试用例仍然失败。

任何人都可以向我提出一些想法,让我始终可以通过上述test_case(即使在成功和失败的情况下)?

先谢谢了。

1 个答案:

答案 0 :(得分:0)

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

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

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中进行其他声明,以确保这正是您所预期的错误。