Есть ли у кого-нибудь идеи, как издеваться над $ httpBackend в угловых тестах e2e? Идея заключается в том, чтобы пропустить XHR-запросы при выполнении тестов на travis-ci. Я использую karma для прокси-активов и частичных файлов из моего приложения rails, работающего на travis. Я хочу провести приемочное тестирование без реальных запросов к БД.
Вот часть моего файла конфигурации карма:
...
files = [
MOCHA,
MOCHA_ADAPTER,
'spec/javascripts/support/angular-scenario.js',
ANGULAR_SCENARIO_ADAPTER,
'spec/javascripts/support/angular-mocks.js',
'spec/javascripts/e2e/**/*_spec.*'
];
...
proxies = {
'/app': 'http://localhost:3000/',
'/assets': 'http://localhost:3000/assets/'
};
...
Вот часть моей спецификации файла:
beforeEach(inject(function($injector){
browser().navigateTo('/app');
}));
it('should do smth', inject(function($rootScope, $injector){
input('<model name>').enter('smth');
//this is the point where I want to stub real http query
pause();
}));
Я пытался получить $ httpBackend обслуживание через $ инжектором:
$injector.get('$httpBackend')
Но это не тот, который используется внутри iframe, где выполняются мои тесты.
Следующая попытка я сделал использую angular.scenario.dsl, вот код выборочный: пример
angular.scenario.dsl('mockHttpGet', function(){
return function(path, fakeResponse){
return this.addFutureAction("Mocking response", function($window, $document, done) {
// I have access to window and document instances
// from iframe where my tests run here
var $httpBackend = $document.injector().get(['$httpBackend']);
$httpBackend.expectGET(path).respond(fakeResponse)
done(null);
});
};
});
Использования:
it('should do smth', inject(function($rootScope, $injector){
mockHttpGet('<path>', { /* fake data */ });
input('search.name').enter('mow');
pause();
}));
Это приводит к следующей ошибке:
<$httpBackend listing> has no method 'expectGET'
Итак, на данный момент я понятия не имею о следующем шаге. Кто-нибудь пробовал делать что-то подобное, действительно ли этот тип обрушения возможен?
как вы настраиваете свою карму, чтобы иметь «инъекцию» в своей спецификации? Я продолжал получать ReferenceError для своих тестов. – wakandan