我知道有很多类似的问题,但没有一个适用于相同的场景 - 所以请不要将其标记为重复。
我试图弄清楚如何执行控制器方法的测试,该方法调用注入的工厂服务的方法,执行 $http 调用并返回 json 数组。
这是我所拥有的:
angular.module('myApp', [])
.factory('callsFact', function($http) {
var urlWrite = 'write.php';
return {
write : function(content) {
return $http({
method: 'POST',
url: urlWrite,
data: "content=" + content,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
}
};
})
.controller('ReadWriteCtrl', function($scope, callsFact) {
$scope.data = [];
$scope.content = 'Some content';
$scope.add = function() {
callsFact.write($scope.content).success(function(data) {
$scope.data.push({ id : data.id, content : $scope.content });
});
};
});
现在,这是我进行测试的地方,因为我不太确定该怎么做(请不要批评 - 我正在寻求帮助):
describe('ReadWriteCtrl tests', function() {
var $scope,
callsFact;
beforeEach(function() {
module('myApp');
inject(function($rootScope, _callsFact_) {
$scope = $rootScope.$new();
callsFact = _callsFact_;
});
});
it('should add new content', inject(function($controller) {
$controller('ReadWriteCtrl', {
$scope : $scope,
callsFact : callsFact
});
$scope.data = [];
$scope.content = 'Some message';
$scope.add();
expect($scope.data.length).toBe(1);
}));
});
只是为了澄清 - 我试图弄清楚如何测试 ReadWriteCtrl 的 add() 方法。