2

メッセージが他のサブスクライバーに既に送信されている場合にのみ、新しいサブスクライバーにメッセージを送信する 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();
    });

もちろん、魔法の睡眠機能には問題がある。この種の「コールバックが起動しないことを期待する」テストを行うためのより良い方法はありますか?

ありがとう、マイク

4

1 に答える 1