根據vojitajina pull request,我和老闆之間關於Angular E2E testing.的熱烈討論,我們需要運行一個服務器來運行e2e測試。因此,運行e2e測試需要一臺真正的服務器,一臺真正的服務器需要數據庫。這使得測試變得緩慢。現在,問題是如何在不涉及真正的服務器的情況下測試e2e?有沒有辦法使用httpBackend和e2e角度API,我可以使用browser(),element(),select(),爲我的測試?模擬httpBackend的角度端到端測試?
4
A
回答
5
[見下面的編輯]我們使用shell腳本定期捕獲來自種子測試服務器的curl請求。然後這些響應通過$ httpBackend.whenGet(...).response()返回以截獲並返回該數據。
因此,在我們的index.html
if (document.location.hash === '#test') {
addScript('/test/lib/angular-mocks.js');
addScript('/test/e2e/ourTest.js');
window.fixtures = {};
addScript('/test/fixtures/tasks/tasks_p1.js');
// the tasks_p1.js is generated and has "window.fixtures.tasks_p1 = ...json..."
addScript('/test/fixtures/tasks/tasks_p2.js');
// the tasks_p2.js is generated and has "window.fixtures.tasks_p2 = ...json..."
addScript('/test/e2e/tasks/taskMocks.js\'><\/script>');
}
ourTest.js
angular.module('ourTestApp', ['ngMockE2E','taskMocks']).
run(function ($httpBackend, taskMocks) {
$httpBackend.whenGET(/views\/.*/).passThrough();
$httpBackend.whenGET(/\/fixtures.*\//).passThrough();
taskMocks.register();
$httpBackend.whenGET(/.*/).passThrough();
});
taskMocks.js
/*global angular */
angular.module('taskMocks', ['ngMockE2E']).
factory('taskMocks', ['$httpBackend', function($httpBackend) {
'use strict';
return {
register: function() {
$httpBackend.whenGET(..regex_for_url_for_page1..).respond(window.fixtures.tasks_p1);
$httpBackend.whenGET(..regex_for_url_for_page2..).respond(window.fixtures.tasks_p2);
}
};
}]);
在少數情況下我們的數據是關係到當前的日期;例如「本週的任務」,所以我們按照register()方法處理捕獲的數據。
編輯 我們現在使用Rosie爲我們的模擬對象創建工廠。因此,沒有更多的CURLing測試服務器用於預期的json響應。 index.html的不再加載這些「.js文件」燈具和嘲笑的樣子:
taskMocks.js
/*global angular */
angular.module('taskMocks', ['ngMockE2E']).
factory('taskMocks', ['$httpBackend', function($httpBackend) {
'use strict';
var tasks_p1 = [ Factory.build('task'), Factory.build('task')],
tasks_p2 = [ Factory.build('task'), Factory.build('task')]
return {
register: function() {
$httpBackend.whenGET(..regex_for_url_for_page1..).respond(tasks_p1);
$httpBackend.whenGET(..regex_for_url_for_page2..).respond(tasks_p2);
}
};
}]);
-1
要回答你的問題,是有一種方法可以做到這一點,而不涉及真正的服務器您可以使用$ httpBackend在e2e測試中模擬響應,但並不像在單元測試中嘲諷它們那樣簡單。您還需要在index.html中包含angular-mocks.js,並在app.js中包含'ngMockE2E'。
相關問題
- 1. 模擬$ httpBackend角e2e測試
- 2. 用QUnit寫角度端到端測試? (不使用角度模擬)
- 3. qunit和httpBackend的角度測試
- 4. 無法運行角度種子中的端到端測試
- 5. 語法錯誤:當試圖導入端到端測試量角器的角度
- 6. 角單元測試 - httpBackend JSONP
- 7. 角度端到端成分測試失敗
- 8. E2E測試,單元測試和模擬數據與$ httpBackend混淆
- 9. 模擬InfluxDB客戶端測試MetricCollector類
- 10. 單元測試模擬WCF客戶端
- 11. 如何模擬測試REST客戶端?
- 12. Webservices的端到端測試
- 13. 量角器端對端測試
- 14. 使用httpBackend模擬API [量角器]
- 15. 快速端到端測試
- 16. JMeter和端到端測試
- 17. 調試角度前端
- 18. 使用httpBackend測試指令的角度單位
- 19. 端到端測試:噶+ JQuery的VS量角器
- 20. 帶量角器端到端測試的電子應用程序
- 21. 單元測試角$ httpBackend服務
- 22. 做端到端測試上Admin側滑軌和角
- 23. 量角器登錄頁面並測試端到端導航
- 24. Angularjs端到端測試與角UI選擇二元素
- 25. 在端到端使用TimeShift.js量角器測試
- 26. 太多的端到端測試?
- 27. 量角器:角端對端測試重複選擇
- 28. 端對端測試沒有發現規格角2量角器
- 29. 測試進度與承諾通知$ httpBackend
- 30. 量角器:試圖寫入文本框端對端測試
很抱歉,但我不明白什麼。 – Adelin
什麼是「捲曲請求」,以及種子測試服務器的含義是什麼? – Adelin
對不起 - 試圖讓你足夠讓你過駝峯。 curl是用於製作網絡請求的命令行工具。 –