mardi 3 février 2015

Karma unit test -Calling controller's function but not able to inject Service Object


  1. If my unit test is calling function which is in controller and that function is having a service call to fetch the details. Will it call service(StationService)?

  2. My Karma unit test is not able to inject StationService and not able to call service.


My Code.



/// controller


var policyControllers = angular.module('policyControllers', []);
policyControllers.controller('StationListController', ['$translate', '$scope','$rootScope','$state', 'StationService', 'StationListExportService', function ($translate, $scope, $rootScope, $state, StationService, StationListExportService) {
...
$scope.getFilterDetails = function(StationService, filterDetails ){

StationService.get(filterDetails).$promise.then(function (filteredDetails) {
console.log(" Web services Result - ", JSON.stringify(filteredDetails));
},function(error) {
console.log(" Error ");
});
};


///Service

var policyServices = angular.module('policyServices', ['ngResource']);
policyServices.factory('StationService', ['$resource', function($resource) {
return $resource(policyConfig.mock? 'modules/policymanager/services/mock/stations.json': 'http://ift.tt/1LHVy0C',{},{
get:{method: 'POST',isArray: false, url:'modules/policymanager/services/mock/stations.json'}
});
}]);



/// Unit test
describe('station filter', function(){

var scope;
var ctrl;
var translate, scope, rootScope, state;
var StationService, StationListExportService;

beforeEach(module('policyServices'));
beforeEach(module('policyControllers'));



beforeEach(inject(function(_StationService_, _StationListExportService_, $rootScope, $controller, $translate, $state) {

StationService = _StationService_;
StationListExportService = _StationListExportService_;
translate = $translate;
rootScope = $rootScope;
state = $state;
scope = $rootScope.$new();
ctrl = $controller('StationListController', {$scope: scope});

}));




it('Stations Inject test case', inject(['StationService',function(StationService){

var data = {"recency":"","countries":[],"policies":[],"stations":[{"stationName":"Test"}],"status":"ready","regions":[]};

scope.getFilterDetails(StationService, data);

/// Getting StationService is undifiened

}]));

Aucun commentaire:

Enregistrer un commentaire