2017-05-23 48 views
1

我有一個用mocha寫的單元測試,用於測試web套接字連接和在客戶端上完成的解析。我的問題是我需要打開客戶端網頁才能與Web套接字服務器進行通信。有什麼方法可以模擬node.js中的內容嗎?網絡套接字服務器的單元測試需要在瀏覽器中打開網頁

我的單元測試操作類似於如下:

1)一種web套接字啓動並等待客戶端連接。

2)打開客戶端在特定的URL(目前缺少,使用設置爲我測試的URL的Web瀏覽器)。客戶端連接到Web套接字,並嘗試反覆,如果它不可用。

3)一旦客戶端連接到Web套接字,它就會發送JSON到客戶端的測試邏輯。

4)客戶端發回在web套接字驗證的json,如果web套接字接收到適當的響應,則測試通過。

現在一切都很好,除了我必須打開一個瀏覽器到測試網址。我希望能夠在不打開瀏覽器的情況下運行測試。

+0

它可以被剪短或嘲笑? [this](https://stackoverflow.com/questions/23151954/stubbing-websocket-in-javascript-with-jasmine)有幫助,還是可能[this](https://github.com/thoov/mock-socket) )? – Adam

+0

我正在尋找一些東西來模擬客戶端。我更新了這個問題。 –

+0

也許[這](http://liamkaufman.com/blog/2012/01/28/testing-socketio-with-mocha-should-and-socketio-client/)有幫助嗎? – Adam

回答

0

我找到了解決方案selenium-webdriver。當你需要打開一個chrome實例時,它可以很好地工作。它還允許您設置文本字段併發送按鍵,如果您需要登錄表單或類似的東西。

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); 
相關問題