メッセージが他のサブスクライバーに既に送信されている場合にのみ、新しいサブスクライバーにメッセージを送信する Faye パブリッシュ/サブスクライブ サーバーがあります。単体テストにモカを使用しています。
このテストは、基本的な機能を確認するために機能します。
it('should send a special message to new subscribers', function(done){
testerPubSub.setLastJsonContent('some arbitrary content');
var subscription = client.subscribe("/info", function(message) {
assert.equal(true, message.text.indexOf('some arbitrary content') !== -1, 'new subscriber message not sent');
done();
});
subscription.cancel();
});
ただし、以前のサブスクライバーにメッセージが送信されていない場合をテストしたいと思います。このテストは次のようになります。
it('should not send a special message to new subscribers if no data has been retrieved', function(done){
testerPubSub.setLastJsonContent(null);
var messageReceived = false;
var subscription = client.subscribe("/sales", function(message) {
messageReceived = true;
});
////need to magically wait 2 seconds here for the subscription callback to timeout
assert.equal(false, messageRecieved, 'new subscriber message received');
subscription.cancel;
done();
});
もちろん、魔法の睡眠機能には問題がある。この種の「コールバックが起動しないことを期待する」テストを行うためのより良い方法はありますか?
ありがとう、マイク