如何在异步等待中强制通过测试用例 Node.js 使用 Chai 和 mocha 的单元测试代码
How to pass test-case forcibly in Async await Node.js Unit Testing code using Chai and mocha
我正在使用下面的测试用例在 Mocha 和 Chai 中测试服务,它工作正常。
describe('Google ', () => {
it('POST: Google.', async () => {
const results = await readGoogle.execute(jmsPayload);
console.log(`Final Result : ${results.toString()}`);
});
});
关于上述代码,我需要处理一种情况。实际上我有时会从服务 class readGoogle.execute 方法中得到这个异常。
TypeError: Cannot read property 'status' of undefined
从 readGoogle.execute 方法的角度来看,这是预期的。但是我的要求是我需要通过上面的测试用例,即使我从 readGoogle.execute await 方法中得到错误。
1) 我无权访问 readGoogle.execute 方法,所以我无法处理那里的未定义检查。只在我的测试用例中做任何事情。
2) 我在上面 'it'
中尝试 return true,
但测试用例仍然失败。
3) 我也试过了,assert(true);在上面 it
,但测试用例仍然失败。
任何人都可以向我建议我可以始终通过上述 test_case 的想法(即使在成功和失败的情况下)?
提前致谢。
根据我的理解,你有一个像上面那样的 readGoogle.execute 调用的测试,因为它是外部的 resource/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 中做一些其他断言以确保这正是您预期的错误。
我正在使用下面的测试用例在 Mocha 和 Chai 中测试服务,它工作正常。
describe('Google ', () => {
it('POST: Google.', async () => {
const results = await readGoogle.execute(jmsPayload);
console.log(`Final Result : ${results.toString()}`);
});
});
关于上述代码,我需要处理一种情况。实际上我有时会从服务 class readGoogle.execute 方法中得到这个异常。
TypeError: Cannot read property 'status' of undefined
从 readGoogle.execute 方法的角度来看,这是预期的。但是我的要求是我需要通过上面的测试用例,即使我从 readGoogle.execute await 方法中得到错误。
1) 我无权访问 readGoogle.execute 方法,所以我无法处理那里的未定义检查。只在我的测试用例中做任何事情。
2) 我在上面 'it'
中尝试 return true,
但测试用例仍然失败。
3) 我也试过了,assert(true);在上面 it
,但测试用例仍然失败。
任何人都可以向我建议我可以始终通过上述 test_case 的想法(即使在成功和失败的情况下)?
提前致谢。
根据我的理解,你有一个像上面那样的 readGoogle.execute 调用的测试,因为它是外部的 resource/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 中做一些其他断言以确保这正是您预期的错误。