私はコントローラにサービスの機能を呼び出す。以下は、今どのように(プロバイダとすることができる)サービスコールをモックを教えてくださいコードコントローラのジャスミンでのサービスの.successと.error
サービス
(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機能をモック私を助けてください、エラーを与えていません私の仕様ファイル
ありがとうございます。
このコードはどこでプロバイダまたは仕様書に記述しますか? – aditya
あなたはそれぞれの前にこれを書かなければなりません。このようなもの:。 beforeEach(angular.mock.inject((MyServiceで)=> { するvar _myService = MyServiceで、 spyOn(_myService、 "getMyData")and.callFake(()=> { リターン{ エラー:(コールバック)=> { リターンコールバック({}); } }; }); } –
IはbeforeEachでこれを行うと、それは「MyService.getMyData(...)エラーを示しています。成功は機能ではありません " – aditya