2015-09-28 2 views
0

По какой-то причине, когда я запускаю тест, Жасмин говорит мне, что «DataFactory» не определен. Любые идеи почему?Injected service undefined при тестировании с использованием жасмина

describe('Practice', function(){ 
beforeEach(module('MyApp')); 
var ctrl; 
beforeEach(inject(function($controller, DataFactory){ 
    spyOn(DataFactory, 'getArtists').andCallThrough(); 
    ctrl = $controller('ArtistCtrl') 
})); 

it('should have array available on load', function(){ 
    expect(DataFactory.getArtists).toHaveBeenCalled(); 
    expect(DataFactory.getArtists.callCount).toEqual(1); 
}); 

});

angular.module('MyApp') 
.factory('DataFactory', ['$http', function($http){ 
    return { 
     getArtists: function(){ 
      return $http.get('artists.json'); 
     } 
    } 
}]); 

ответ

0

Для получения поддержки вам необходимо показать код, в котором вы определяете DataFactory!

Здесь я вижу другую опечатка:

expect(DataFactory.getArtists).toHaveBeenCalled(); 
expect(dataFactory.getArtists.callCount).toEqual(1); <-- DataFactory instead of dataFactory 
0

Вам нужно определить DataFactory в тесте.

Сделайте это.

describe('Practice', function(){ 
var ctrl; 
var DataFactory; 

beforeEach(module('MyApp')); 
beforeEach(inject(function($controller, _DataFactory_){ 
    DataFactory = _DataFactory_; 
    spyOn(DataFactory, 'getArtists').andCallThrough(); 
    ctrl = $controller('ArtistCtrl', { 
     DataFactory: DataFactory 
    }); 
})); 

it('should have array available on load', function(){ 
    expect(DataFactory.getArtists).toHaveBeenCalled(); 
    expect(DataFactory.getArtists.callCount).toEqual(1); 
}); 
Смежные вопросы