2017-05-23 28 views
1

mochaでnode.jsの単体テストを行い、Webソケット接続とクライアント上での解析をテストしています。私の問題は、Webソケットサーバーと通信するためにクライアントWebページを開いておく必要があることです。 node.js内でシミュレートする方法はありますか?WebソケットサーバーのユニットテストにはブラウザでWebページが開かれている必要があります

次のように私のユニットテストが動作:

1)ウェブソケットが起動し、接続するクライアントを待ちます。

2)特定のURL(現在はテスト中のURLに設定されたWebブラウザを使用していない)でクライアントを開きます。クライアントはWebソケットに接続し、利用できない場合は何度も試行します。

3)クライアントがWebソケットに接続すると、jsonをクライアントのテストロジックに送ります。

4)クライアントはウェブソケットで検証されたjsonを返信し、ウェブソケットが適切な応答を受け取るとテストに合格します。

現在、テストURLにブラウザを開く必要があることを除いて、すべてがうまくいきます。私はブラウザを開かずにテストを実行できるようにしたいと思います。

+0

スタブまたはモックすることはできますか? [this](https://stackoverflow.com/questions/23151954/stubbing-websocket-in-javascript-with-jasmine)は助けますか?[this](https://github.com/thoov/mock-socket) )? – Adam

+0

私はクライアントを模擬するための何かを探しています。私は質問を更新しました。 –

+0

多分[this](http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and-socketio-client/)は役に立ちますか? – Adam

答えて

0

解決策が見つかりましたselenium-webdriver。これは、クロムのインスタンスを開く必要があるときに完全に動作します。また、フォームなどにログインする必要がある場合は、テキストフィールドを設定してキー押下を送信することもできます。

var webdriver = require('selenium-webdriver'); 
var monitor = {width: 1920, height : 1200}; 
var host = "http://localhost:8000/"; 
var _webBrowser = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build(); 
_webBrowser.manage().window().setPosition(0, 0); 
_webBrowser.manage().window().setSize(monitor.width/2, monitor.height); 
_webBrowser.get(host); 
関連する問題