Тесты в AngularJS: эталонная ошибка функции впрыска - программирование
Подтвердить что ты не робот

Тесты в AngularJS: эталонная ошибка функции впрыска

Я пытаюсь проверить код ниже:

describe('myService test', function () {
    describe('when I call myService.one', function () {
        beforeEach(angular.module('TargetMarketServices'));
        it('returns 1', inject(function (imagesRepository) {
            expect(true).toEqual(true);
        }));

    });

});

Когда этот код выполняется, я получаю эту ошибку:

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')
    at http://localhost:8080/testacular.js:76
    at http://localhost:8080/context.html:35
ReferenceError: Can't find variable: inject
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:6
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:8
    at /home/peter/Dropbox/AngularJS/set-component/test/sets/sets-ihm.js:10

PhantomJS 1.8: Выполнено 1 из 3 (1 НЕИСПРАВНО) (пропущено 2) (0,072 с /0,01 сек)

Для моего теста я использую Testacular с Jasmine и PhantomJS.

4b9b3361

Ответ 1

AngularJS предоставляет две тестовые библиотеки:

  • angular -mocks.js
  • angular -scenario.js

angular -mocks используется для тестирования Жасмина и Кармы. Он публикует глобальные методы module() и inject(), которые будут использоваться в ваших тестовых тестах Jasmine. Это означает, что вы должны загрузить angular -mocks.js script (после загрузки библиотеки angular.js/script)

angular -scenario используется только для тестирования e2e.

Ответ 2

Линия, в которой у вас

beforeEach(angular.module('TargetMarketServices'));

должен быть

beforeEach(module('TargetMarketServices'));

Если вы посмотрите проект angular-phonecat в test/unit/directivesSpec.js, он использует

beforeEach(module('myApp.directives'));

Если я изменю его, чтобы вместо этого использовать angular.module:

beforeEach(angular.module('myApp.directives'));

то я также получаю эту ошибку при запуске testacular:

TypeError: 'undefined' is not a function (evaluating 'this.func.apply(this.spec)')