Я использую Protractor для того, чтобы получить некоторые сквозные тесты в моем приложении. В тесте я издеваться бэкенд-звонки с MockModule следующим образом:Перехват транспортира «beforeAll» http mock
describe('Lets test a feature' , function(){
beforeAll(function() {
var customerE2E = function() {
angular.module('customerE2E', ['customer', 'ngMockE2E'])
.run(function ($httpBackend) {
$httpBackend.whenPOST('/api/data').respond(200);
$httpBackend.whenGET(/^.*/).passThrough();
});
};
browser.addMockModule('customerE2E', customerE2E);
});
it('correctly demonstrates my problem', function() {
expect(element(by.css('h4')).getText()).toMatch('Hello world');
}
})
Это работает очень хорошо, но моя проблема в том, что я хочу, чтобы проверить мое заявление, когда пост реагирует с 404, 500 и т.д. Я решил это, получив новую «описать» -функцию для каждого случая, но было бы неплохо просто переопределить этот вызов из «it» -функций.
it('correctly demonstrates my problem', function() {
expect(element(by.css('h4')).getText()).toMatch('Hello world');
}
it('show error due to bad request', function() {
/*
Replace $httpBackend.whenPOST('/api/data').respond(200);
with $httpBackend.whenPOST('/api/data').respond(404);
*/
expect(element(by.css('h4')).getText()).toMatch('Failed api call');
}
Я действительно новичок в этом, так что я интересно, если есть хороший способ достичь простой способ, чтобы переопределить ранее MockModuled, который был установлен в beforeAll-функции.
Вы даже пробовали это? Я не могу ни доходить до $ httpBakend с beforeEeach, так как он используется в модуле. Это можно решить, создав новый customerE2E в beforeEech, но это кажется уродливым, и я также не могу достичь переменных statusCodes и CurrentTestNumber – willedanielsson