2016-05-23 9 views
0

私はUnitTestにwebsocketでJasmineフレームワークを使用しようとしています。 (ジャスミン-2.4.1版)jasmineフレームワークでwebsocketを使用するにはどうすればいいですか?

websocket send機能は正常です。 onmessage機能に問題があります。

結果の値は未定義です。あなたがメッセージを受信する前に結果がtruthyであることを期待している

var ws; 
beforeEach(function() { 
    ws = new WebSocket("ws://myaddress:port"); 
}); 

describe("Module Test", function() { 

    it("first test", function (done) { 
     //send to server 
     ws.onopen = function(e) { 
      ws.send(JSON.stringify({"module":"test","func":"test_func"})); 
     }; 

     var result; 
     ws.onmessage = function(e) { 
      result = JSON.parse(e.data.rsp); 
      console.log(result); // <- this result value is true... 
     }; 

     //server return result value.. and... it is true..... 
     //but result value is undefiend.... 
     expect(result).toBe(true); 
     done(); 
    }); 
}); 

答えて

0

は、ここに私のコードです。私が問題を誤解した場合は私を許してください。しかし、これはあなたのテストを修正するはずです: -

var ws; 
beforeEach(function() { 
    ws = new WebSocket("ws://myaddress:port"); 
}); 

describe("Module Test", function() { 

    it("first test", function (done) { 
     ws.onopen = function(e) { 
      ws.send(JSON.stringify({"module":"test","func":"test_func"})); 
     }; 

     ws.onmessage = function(e) { 
      var result = JSON.parse(e.data.rsp); 
      expect(result).toBeTruthy(); 
      done(); 
     }; 
    }); 
}); 
+0

var結果の値は定義されていません。 したがって、toBeTruthy()は機能しません。 : –

+0

@SunghoPark謝罪...あなたのコメント機能の中に「真実」だと思ったのですが、それはあなたのコメントがその隣に書いていることです。そのため、結果値が取得される前に主張するのは簡単な間違いでした – Shakespeare

関連する問題