我在控制器中調用服務的功能。下面是代碼測試。控制器茉莉花服務的成功和錯誤
服務
(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