Обновление макетов объектов в тестах транспортира

Просто интересно, есть ли у кого-нибудь хорошее решение для обновления ложных звонков в тесте транспортира. Мне нужно иметь возможность смоделировать вызов (что я могу сделать с помощью ngMockE2E), но в следующий раз, когда вызов будет выполнен, я хочу, чтобы он вернулся с другими результатами.

httpbackend.when('GET', ....URL....).respond(200, results);

где results это объект json, который возвращается.

При первом вызове он возвращается с правильным json. Но в том же тесте я хочу обновить эти результаты, чтобы при следующем вызове он возвращал обновленный json.

Мысли?

1 ответ

Решение

При использовании модуля http-backend-proxy с помощью объекта контекста можно изменить ответ на запрос с тем же URL-адресом. Для этого вам нужно передать функцию .respond() метод, который должен возвращать массив с данными о состоянии и ответе. Внутри этой функции у вас есть доступ к так называемому объекту контекста, который используется для передачи данных из теста Protractor в приложение Angular на странице. Можно изменить этот объект контекста из теста, чтобы приложение Angular могло получить другой ответ.

var HttpBackend = require('http-backend-proxy');
var proxy = new HttpBackend(browser);

// ...

// use one data for first response
proxy.context = {
    notes: notifications,
    messages: allMessages
};

proxy.when('GET', '...notificationsURL...').respond(function () {
    return [200, $httpBackend.context];
});

// here make a first call

// use another data for second response
proxy.context = {
    notes: notifications2,
    messages: allMessages2
};

proxy.syncContext(); // required, update context content for Angular app

// here make a second call

Примечание: функция, которую вы передаете .respond() будет сериализован (преобразован в строку) и вставлен на страницу, по умолчанию для доступа к объекту контекста из Angular-переменной $httpBackend используется. Взгляните на этот раздел документации, чтобы переименовать его - Настройка объекта контекста.

Другие вопросы по тегам