2014-04-28 494 views
3

有沒有什麼辦法基本上用量角器/ WebDriver進行單元測試?我最想做的事情是隔離一個指令/組件,模擬它的依賴關係,注入各種數據,並在一堆瀏覽器中用量角器遍歷它。用量角器測試AngularJS指令

有沒有辦法做到這一點?

回答

2

量角器(更廣泛地說,Selenium)通常用於自動化非技術最終用戶能夠自行執行的各種測試。話雖如此,有時候模擬服務器上的各種錯誤條件可能有用。你有幾個選擇:

  1. onPrepare腳本:使用onPrepare腳本做盡可能多的後臺設置工作就可以了,如果有可能因此提前做。將量角器配置文件(see sample here)內的onPrepare屬性設置爲指向您的準備腳本,您可以在該腳本中設置數據庫中的記錄,創建文件或其他可能需要執行的操作。

  2. 使用protractor.addMockModule這使您可以通過添加模塊每當Protractor.get被稱爲前角加載基本嘲笑你的後臺API。請參閱博客文章的一個樣本(搜索「超越基礎」):
    http://product.moveline.com/testing-angular-apps-end-to-end-with-protractor.html

  3. 只配置測試路由服務器上:作爲最後的手段,你可以在服務器上配置一些路由:只能在開發環境中進行訪問,該環境可以執行您在端到端測試中可能需要的任何後端處理。例如,如果您使用Express.js使用Node.js,則可以執行下面的操作。

測試專用路線:

// Store your server-side e2e methods in this file 
var e2eBackend = require('./test/e2eBackend'); 

if (app.get('env') === "development") { 
    app.get('/e2e/simulateCrash', e2eBackend.simulateCrash); 
    // etc. 
} 
0

量角器主要用於e2e測試。按最終用戶視角進行測試。 你可以使用茉莉花框架進行單元測試,量角器e2e測試也支持茉莉花。

+0

我使用噶(茉莉)現在測試一切很好,但就像你說的,這是單元測試,而不是從用戶的角度來看, 。我想要做的是從用戶的角度進行測試(量角器),但控制被測組件的狀態。在e2e測試中模擬所有錯誤條件並不總是很容易。例如,如何測試處理服務器故障或互聯網連接丟失的特定小部件? – nicholas