Я не могу понять, почему я продолжаю получать это исключение. Услуга находится в одном модуле, а помощник (тестируемый блок) находится в другом. Я пытаюсь издеваться над сервисом (который является зависимостью для помощника) и создавать помощника, вводящего это издеваемое обслуживание.'undefined' не является функцией - Jasmine unit test для AngularJS
Спасибо за любые идеи!
TypeError: 'undefined' is not a function (evaluating 'jasmine.spyOn(myService, 'someData')')
Вот тест:
describe('myHelper test', function() {
var myHelper, myService;
var expectedData = 'test';
beforeEach(module('serviceModule'));
beforeEach(module('helperModule'));
it('works', function() {
module(function($provide) {
$provide.service('myService', function() {
someData = jasmine.spyOn(myService, 'someData').and.callFake(function(){
return 100; });
});
});
var mockMyService;
inject(function(myService){
mockMyService = myService;
});
angular.module('helperModule').config(['myHelperProvider', function (myHelperProvider) {
return myHelper(mockMyService, _);
}]);
expect(myHelper.someData()).toEqual(expectedData);
});
});
У вас возникли проблемы с выполнением кода тестирования вашего модуля вне контекста - можете ли вы также отправить код службы/вспомогательного модуля? В общем, мое предложение состояло бы в том, чтобы сделать формальный макет службы, а не делать это в самом модульном тесте, поскольку это делает макет портативной. – user1821052