测试应该在 mocha 中失败的东西。 (断言而不捕获)

Testing stuff that should fail in mocha. (assert without catching)

我正在尝试在 mocha 中测试失败。当这个请求成功时,我想注册一个失败,因为它不应该。我的问题是,当我 运行 assert(false) 时,它似乎触发了 catch

it('Should fail to complete this hail, because driver is not driver', (done) => {
    req(rider, '/hail/complete', {
        id: driver.id
    }).then(() => {
        assert(false);
        done();
    }).catch((err) => {
        assert.equal(1, err.error.errors.length);
        done();
    });
});

这就是承诺链的工作方式:如果 .then() 抛出异常,后续的 .catch() 将捕获它。

由于您想捕获 req() 抛出的拒绝,您可以通过向 .then() 添加拒绝处理程序来解决这个问题。而且,由于您使用的是 Mocha,因此您可以利用 Mocha 支持承诺这一事实。

所有这些都可以让你做到这一点:

it('Should fail to complete this hail, because driver is not driver', () => {
  return req(rider, '/hail/complete', { id: driver.id }).then(() => {
    assert(false);
  }, err => {
    assert.equal(1, err.error.errors.length);
  });
});