3

Мне нужно настроить некоторые интеграционные тесты в AngularJS с использованием Karma/Jasmine, но возникают проблемы, потому что, когда вы не используете ngMock (так как я хочу попасть в фактический $ http конечных точек), нет методов module или inject.Использование инжектора в AngularJS при тестировании интеграции (без использования ngMock)

Итак, как мне внедрить услуги в мои тесты?

Я пробовал angular.injector.invoke(...), но не могу заставить его работать, всегда возвращается с ошибкой, например Unknown provider: AuthServiceProvider <- AuthService.

Мысли?

+0

Я не то, что вы имеете в виду под «не существует никаких модулей или впрыснуть методы.» Можете ли вы добавить пример кода в свой пост? –

+0

Посмотрите: http://pastebin.com/cey8tPdG. Это базовый тест в угловом использовании кармы/жасмина. Результатом является 'ReferenceError: не удается найти переменную: module', если вы не используете модуль ngMock. – ngDeveloper

ответ

2

попробует это

'use strict'; 

describe('Login User', function() { 
    var app, LoginService; 

    beforeEach(module('app')) ; 

    beforeEach(inject(function(_LoginService_) { 
     LoginService = _LoginService_; 
    })) ; 

    it('Should be logged in', function() { 
     var isLoggedIn = LoginService.isUserLoggedIn(); 
     expect(isLoggedIn).toBeTruthy(); 
    }); 
}); 
+0

'ReferenceError: Не могу найти переменную: module' – ngDeveloper

+1

Можете ли вы опубликовать конфигурацию вашей кармы? – Martin

+0

Ух, я просто что-то пробовал. Я включаю файл «angular-mocks.js» в карме. Но я не включаю 'ngMock'. И удивительно, что это работает! Теперь я могу использовать 'module' и' inject' в тестах карма/жасмин. Я надеюсь, что это означает, что $ httpBackend не выполняется. Я дам это дальнейшее тестирование позже, чтобы убедиться, что смогу выполнить свои интеграционные тесты. – ngDeveloper

Смежные вопросы