私のコントローラで実行されているサービスコールをテストするためのコードを記述しようとしています。私はサービスコールをしているコントローラの特定の機能をユニットテストし、データを取得しようとしています。現在、私はローカルjsonで試していますが、実際にサービスコールを行います。サービスコールのコントローラをテストできません
私はスパイオブジェクトを作成していますが、「TypeError:jasmine.CreateSpyObjは関数ではありません」というエラーが発生していることを知りました。私は単体テストの初心者です。私はspyobjectを作成することができませんので、さらに進めません。コードを保存して、私に助けてください。
また、spyObjectを正常に作成すると正確に何をしなければならないのか分かりません。実際にサービスが正常に機能しているかどうかをテストしたいのですが、サービスからの応答があります。
私は今これを何日も頑張っています。
サービスコード:
//app is the module name
app.factory('appServices', ['$rootScope', '$http', function($rootScope,
$http) {
var appServices = {};
appServices.getData = function(){
return $http.get(scripts/services/data/unitTesting.json');
};
unitTesting.jsonコード:
{
"name":"unit testing",
"countryCode": "EG",
"countryName": "Egypt",
"region": "Africa"
}
コントローラコード:
getData: function(){
appServices.getData().then(function(response) {
if (response && response.data) {
$scope.testVariable= response.data.name;
}
});
},
ユニットテストコード:
describe('myCtrl', function() {
beforeEach(module('app'));
var $controller;
beforeEach(inject(function(_$controller_){
$controller = _$controller_;
}));
describe('service call test', function() {
var $http,$httpBackend,appServices,
myService,$q,$rootScope,controller;
var mockItem =
{
"name":"unit testing",
"countryCode": "EG",
"countryName": "Egypt",
"region": "Africa"
}
beforeEach(inject(function(_$http_,_$httpBackend_,appServices,_$q_,
_$rootScope_) {
$http = _$http_;
$httpBackend = _$httpBackend_;
appServices = appServices;
$rootScope = _$rootScope_;
$q =_$q_;
jasmine.spyOn(appServices, 'getData').and.returnValue($q.when(mockItem));
controller = $controller('myCtrl', { $scope: $scope });
}));
it('Service call test ', function() {
controller = $controller('myCtrl', { $scope: $rootScope.new() });
controller.getData();
expect(appServices.getData).toHaveBeenCalled();
});
});
});
ERROR:
TypeError: jasmine.spyOn is not a function
小文字にする必要があります: 'jasmine.createSpyObj' –
私の間違いを助けてくれてありがとう。私のサービスコールが成功したかどうかをテストするためのこれ以上のステップを教えてください。私はオンラインで多くのソリューションを見てきました。あなたがさらなるステップを助けることができるなら、それは素晴らしいことでしょう。 – GiggleGirl
どのバージョンのジャスミンを使用していますか? –