有人可以告诉我在我的控制器函数getData和工厂函数上运行测试的最佳方法。我很困惑,不知道从哪里开始。你会如何为下面的代码编写测试?Karma测试控制器,用http调用服务
myApp.controller('myController', ['$scope', 'myFactory', function ($scope, myFactory) {
$scope.getData = function(id) {
var promise = myFactory.GetData('/dta/GetData?Id=' + id);
promise
.then(function (success) {
$scope.result = success;
}, function (error) {
$scope.error = true;
});
}
});
myApp.factory('myFactory', ['$http', function ($http) {
return {
GetData: function (url) {
return $http.get(url)
.then(function (response) {
return response.data;
}, function (error) {
return error;
});
}
}
}]);
那你想测试,你的控制器的'getData'方法或你更有用工厂的GetData方法? – Phil
...对于前者,你会[myFactory] [创建一个模拟(间谍)](http://jasmine.github.io/2.0/introduction.html#section-Spies:_
createSpyObj
)。对于后者,使用['$ httpBackend'](https://docs.angularjs.org/api/ngMock/service/$httpBackend) – Phil我想测试上面看到的所有代码。我不确定有经验的测试人员会做什么。 – user1024941