これは、Mocha を使用した Sails JS での非同期テストに関する質問です。
スーパーテスト ライブラリを使用して、Sails JS でコントローラー テストを作成しています。コントローラーへの HTTP POST でメソッドが呼び出されているかどうかを確認したいと思います。end()
そのために、メソッドをスタブ化し、次のように呼び出されることを期待しています。
request(sails.hooks.http.app)
.post('heartbeat/create')
.send('device: 1')
.end(function(err, res) {
expect(publishCreateStub.called).to.be.true;
done();
});
これを実行すると、アサート時にメソッドが呼び出されないため、期待は失敗します。しかし、次のように期待を入れると、setTimeout
うまくいきます:
request(sails.hooks.http.app)
.post('heartbeat/create')
.send('device: 1')
.end(function(err, res) {
setTimeOut(function() {
expect(publishCreateStub.called).to.be.true;
done();
}, 1000);
});
なしでテストに合格する方法はありますsetTimeout
か?
ここに私がテストしているコード部分があります: HeartbeatController#create
プルリクエストを送信して問題を解決することもできます: https://github.com/multunus/one-mdm/issues/1