私は、マングースのフィールドの検証を単体テストする方法を見つけるのに苦労しています。私はgoogleId
の正しい検証を持っている場合、それはerr.errors.googleId
が存在を主張しますので、テストに合格します、ので、意図したとおり、このテストは機能していない単体テストの検証を約束/拒否で行う
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
の検証がありますが、.catch()
が呼び出されることはなく、テストが合格であるとみなされるため、これも合格となります。
私は.then()
内should.fail()
を入れて試してみたが、それはshould.fail()
エラーでcatchedされる何の検証はありませんならば、それは常に.catch()
ではなく、別のエラーで終わるその方法は、検証があります場合、それはモデルでキャッチします検証エラーです。
この種のテストを行うにはどうすればよいでしょうか?
ありがとう!
EDIT: 私はnewBook.validate()
のコールバックを使用してみました、それは動作しますが、私はモデルのメソッドのコールバックを使用することはありません、私はいつも約束を使用する傾向があるので、私は、この特定のケースでは、コールバックを使用するか、まだあります約束を使ってそれを処理するより良い方法は?
ああ、私は 'then()'コールバックについて知らなかった、私は今、最初のコールバックでshould.fail()を返すようになり、あなたが言ったように、そしてすべての作品の2番目のアサーションを作る素晴らしい:Dありがとう! –