我在控制器中调用服务的功能。下面是代码测试。控制器茉莉花服务的成功和错误
服务
(function() {
'use strict';
angular.module('MyApp')
.service('MyService', ['$http', function ($http) {
return {
getMyData: function (extension) {
return $http.get('www.something.com');
}
};
}])
})();
控制器
var getMyData = function() {
MyService.getMyData(extension).success(function (results) {
//Some functionality here
})
.error(function (err, status) {
//Some functionality here
});
}
$scope.Call=function(){
getMyData();
}
$scope.Call();
现在请告诉我如何嘲笑服务调用(可能是供应商)。如何用完整的代码覆盖测试上述功能。
我的spec文件:
$provide.service("MyService", function() {
this.getMyData= function() {
var result = {
success: function (callback) {
return callback({ ServerFileName: "myserverfilename"});
},
error: function (callback) {
return callback({ ServerFileName: "myserverfilename" });
}
};
return result;
}
//......
my controller initiation and other code
此代码不能覆盖的错误块,并给予错误
Cannot read property 'error' of undefined
请帮助我如何写/嘲笑我的服务的getMyData功能我的规格文件
在此先感谢。
我应该在提供程序或规范(it)内写入此代码的位置? – aditya
你必须在之前写这个。是这样的:。 beforeEach(angular.mock.inject((为MyService)=> { 变种_myService =为MyService; spyOn(_myService “getMyData”)and.callFake(()=> { 返回{ 错误:(回调)=> { 返回回调({});} }; });} –
当我为此在beforeEach它显示错误“MyService.getMyData(...)。成功不是一项功能“ – aditya