Угловой макет $httpBackend не работает с транспортиром
Настроить:
beforeEach(function () {
const targetUrl = browser.baseUrl + '/#/Editor/AddRule';
browser.ignoreSynchronization = true;
browser.get(targetUrl);
browser.wait(
function () {
return browser.getCurrentUrl().then(
function (url) {
return targetUrl == decodeURIComponent(url);
});
}, 4000, 'taking too long to load');
browser.addMockModule('httpMocker', function () {
angular.module('httpMocker', ['ngApp', 'ngMockE2E'])
.run(function ($httpBackend) {
console.log("started");
// Mock a response from server
$httpBackend.whenPOST(browser.baseUrl + '/Editor/SaveRule')
.respond(500, {});
});
});
});
Я пытаюсь смоделировать контроллер, у которого есть переменная области видимости, которая затем передается в угловой сервис и, наконец, публикуется на сервере. Сервер имеет конечную точку:
browser.baseUrl + '/Editor/SaveRule' and method is http post.
Тест, который работает против Я хочу запустить против него:
it('Should present a success modal dialog upon successful rule save', function () {
var name = element(by.css('[name="Name"]'));
name.sendKeys('Rule Name 1');
var ErrorCode = element(by.css('[name="ErrorCode"]'));
ErrorCode.sendKeys('Error or warning Code');
var englishLanguage = element(by.css('[name="Language0"]'));
englishLanguage.sendKeys('English warning language');
const ruleSetCheckbox = element(by.css('[name="RuleSet1"]'));
ruleSetCheckbox.click();
browser.pause();
const button = element(by.css('[ng-click="form.$valid && save()"]'));
button.click();
browser.pause();
});
Если я возьму управление на себя, когда транспортир сделает паузу, и вручную нажму кнопку "Сохранить" в моем пользовательском интерфейсе, то на вкладке "Сеть" будет показано, что этот запрос фактически передается на сервер и возвращается с 200, а не с 500, что я хочу. Я уже проверил, чтобы убедиться, что конечные точки совпадают. Что я делаю неправильно?