在我的角度應用程序,我有一個controller
定義如下:
angular.module('myApp.controllers')
.controller('AppController', function($rootScope, $scope, CheckResource) {
$scope.check = function(data) {
var promise = CheckResource.query(data).$promise;
promise.then(function(result) {
$scope.value = result;
}, function() {
$scope.value = "default";
});
};
};
而且我CheckResource
是Factory
如下:
angular.module('myApp.services', ['ngResource'])
.factory('CheckResource', function($resource) {
return $resource('/check', {}, {
query: {
method: 'POST'
}
});
});
我想編寫一個單元測試我控制器AppController
並以某種方式嘲笑我的工廠CheckResource
,但我不知道我可以如何使用$q
和推遲的承諾達到此目的。任何人都可以請解釋我在這種情況下發生了什麼?
測試此場景的選項有哪些?我應該嘲笑我的服務嗎?我應該使用spyOn
嗎?我應該使用$httpBackend
嗎?或者,我應該進行E2E測試嗎?
,你必須注入$ httpBackend服務到您的測試文件 –