我不想讓$ http嘲笑。主要原因是我正在編寫一些集成測試,所以我想要執行所有的AJAX請求。目前在我的測試中沒有被觸發。 任何建議都比歡迎。Angular - 茉莉花能夠真正的XHR被執行嗎?
3
A
回答
0
當您使用Jasmine測試時,角仿真提供了模擬的$ httpBackend,但實際的$ httpBackend仍然存在。您只需在提供服務時告訴提供商使用原件。它看起來像這樣在您的測試:
var original_http_backend = null;
angular.module('ng').config(['$httpBackendProvider', function($httpBackendProvider) {
original_http_backend = $httpBackendProvider;
}]);
beforeEach(module(function($provide) {
$provide.provider('$httpBackend', original_http_backend)
}));
另外值得指出的是,這種做法,一般,是測試您的前端代碼一個糟糕的方式。這是因爲它增加了一個後端依賴項,所以你不能隔離你的前端行爲。最好嘲笑響應和測試。
雖然我確實使用了這個特性,因爲我們的模擬響應是在後端開發的,以便在那裏進行測試,並且我不想重複這些對象。這種方法允許我使用它們。
0
如果您確實需要測試異步操作,那麼您可以使用Jasmine Async Support。它基本上包括與waitsFor
一起創建runs()
塊。一個簡單的例子:
var $http, returned;
it('should evaluate real XHR request', function() {
// this will probably reside in your controller
$http.$get('/foo.json').success(function(data) { returned = data; });
waitsFor(function() {
return !!returned;
}, 'The $http didnt resolved in 1 second', 1000);
runs(function() {
expect(returned).toBe('The value you expect to be returned');
});
});
每個runs
塊將按照指定的順序運行,而當waitsFor
發生時,運行阻塞會等到前waitsFor
決心true
運行。
+1
我也試過這個。我的問題是,根本沒有執行實際的http請求。如果我在Jasmine測試中使用JQuery來創建http請求,那麼所有的工作都很好。這可能與我假設的角度有關。 – 2013-05-06 18:13:05
相關問題
- 1. 與茉莉花
- 2. 獨立茉莉花與Karma - 茉莉花
- 3. 茉莉花需要sinon.js嗎?
- 4. 用茉莉花
- 5. 茉莉花服務行爲
- 6. Angular window.open數據庫模擬茉莉花
- 7. 茉莉花期待不能找到笑話,茉莉花v2.x或茉莉花v1.x
- 8. 茉莉花未定義錯誤,當使用茉莉花jQuery
- 9. 的Javascript JsTestDriver茉莉花和茉莉花的jQuery
- 10. 茉莉花TypeScript測試角
- 11. 茉莉花從event.target.href
- 12. Restangular extendModel茉莉花
- 13. 如何茉莉花
- 14. 不會被調用茉莉花角2
- 15. Webstorm茉莉花集成 - JSHint不識別茉莉花
- 16. 角1 /茉莉花 - 的功能
- 17. Karma與茉莉花並存嗎?
- 18. 茉莉花和Node.js的
- 19. 茉莉花測試用例的angular2 router.navigate()
- 20. 茉莉花測試繼續採取行動雖然WaitsFor爲真
- 21. 功能調用茉莉花測試
- 22. JSHint認爲茉莉花功能不明
- 23. 如何用茉莉花測試功能?
- 24. 茉莉花不能調用Javascript函數
- 25. 茉莉花測試認爲數據沒有被正確解析
- 26. 嘲笑茉莉花承諾
- 27. 茉莉花測試removeEventListener
- 28. HAML-燈具茉莉花
- 29. 茉莉花節點需求*
- 30. 標杆茉莉花規格
到現在爲止,我已經使用了一種不同的技巧,但你的答案會做。 – 2014-01-30 13:13:20