在 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);
  });
});