在 Promise 处理程序中使用断言的好策略是什么
What's a good strategy for using assert in Promise handlers
我想使用 mocha 测试异步操作返回的值。这些值是通过普通的 A+ 承诺提供的。不幸的是,.then
处理程序现在将吞下 assert
抛出的所有异常,因此无论如何测试都会通过:
someOp().then(function(result){
// throws, but will be swallowed
assert(result.indexOf('I_DONT_WANT_THAT') < 0);
done();
});
如何正确测试异步操作的结果?我能想到的就是无休止地传播错误,但在某些时候我需要 assert 抛出一个真正的错误让我的测试失败。
Mocha 可以处理 promise,如果你 return 他们:
it('value should be 0', function() {
return Promise.resolve(1).then(function(value) {
assert(value === 0);
});
});
我想使用 mocha 测试异步操作返回的值。这些值是通过普通的 A+ 承诺提供的。不幸的是,.then
处理程序现在将吞下 assert
抛出的所有异常,因此无论如何测试都会通过:
someOp().then(function(result){
// throws, but will be swallowed
assert(result.indexOf('I_DONT_WANT_THAT') < 0);
done();
});
如何正确测试异步操作的结果?我能想到的就是无休止地传播错误,但在某些时候我需要 assert 抛出一个真正的错误让我的测试失败。
Mocha 可以处理 promise,如果你 return 他们:
it('value should be 0', function() {
return Promise.resolve(1).then(function(value) {
assert(value === 0);
});
});