测试应该在 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);
});
});
我正在尝试在 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);
});
});