【发布时间】:2018-03-25 00:18:01
【问题描述】:
我正在努力寻找一种方法来对 mongoose 中的字段验证进行单元测试。我目前有以下测试:
it('should be invalid if googleId is empty', () =>
testBook.googleId = '';
const newBook = new Book(testBook);
return newBook.validate().catch((err) => {
should.exist(err.errors.googleId);
});
});
此测试未按预期工作,因为如果我对 googleId 进行了正确验证,则测试将通过,因为它将断言 err.errors.googleId 存在,但如果我没有对 googleId 进行任何验证,它也会通过,因为 .catch() 永远不会被调用并且它假定测试通过了。
我尝试将should.fail() 放在.then() 中,但这样它总是以.catch() 结尾,但会出现不同的错误,如果没有验证,它将被should.fail() 错误捕获,如果有验证它将捕获模型验证错误。
实现这种测试的最佳方法是什么?
非常感谢!
编辑:
我尝试使用newBook.validate() 的回调并且它有效,但我从不使用回调模型方法,我总是倾向于使用承诺,所以在这种特殊情况下我应该使用回调还是还有更好的方法来处理它使用承诺?
【问题讨论】:
标签: node.js unit-testing mongoose mocha.js chai