mocha
を使用して、外部Webサービスとの統合テストを実行しています。私は要求/応答の処理のためにsuperagent-promise
を使用し、私はアサーションライブラリとしてexpect
を使用しています。「expect」で失敗するのではなく、superagent +を使用したモカのテスト
これらのテストでは、多数のリクエストをまとめてチェーン化する必要があるため、約束が非常に役立っています。しかし、エラーメッセージそのものではなく、タイムアウト(エラーメッセージなし)でテストが失敗していることに気付いています。
it('[MESSAGES-1] cannot be posted without an auth token', function(done) {
agent.post(config.webRoot + '/rooms/ABC/messages').send({
content: 'This is a test!'
}).end().then(function(res) {
// Not expected
}, function(err) {
expect(err.status).toBe(401)
done()
})
})
作品期待して通過すると::簡単な例として
expect(err.status).toBe(200) // This should fail
次にテスト:
Messages
✓ [MESSAGES-1] cannot be posted without an auth token
しかし私は別のステータスコードを期待する私の主張を変更した場合タイムアウトで失敗します!
1) Messages [MESSAGES-1] cannot be posted without an auth token:
Error: timeout of 1000ms exceeded. Ensure the done() callback is being called in this test.
これはよくある問題ですか?回避策や調整がありますか?私は約束を使う能力を失いたくはありません。
それでした!私はJavaScriptで約束したことを初めて知った - 私は 'catch()'を認識していなかったが、それは完全に機能する。 –