【发布时间】:2016-03-15 14:54:08
【问题描述】:
在我的 Angular 应用程序中,我有一个 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 服务注入到你的测试文件中
标签: javascript angularjs unit-testing jasmine karma-jasmine