Angular 5 - Jasmine Testing: симуляция ошибки неверного ответа на фактический HTTP-запрос - PullRequest
0 голосов
/ 06 сентября 2018

Прежде всего, я все еще изучаю основы Angular 4 в рамках стажировки, которую я делаю; это все еще ново для меня.

В любом случае, я хочу смоделировать ошибку для фактического HTTP-запроса, который я делаю в контроллере компонента Angular, после чего я могу проверить, появляется ли предупреждение об ошибке Bootstrap. (давайте предположим, что он находится в div с идентификатором "updateErrorMessage") Вместо того, чтобы программировать серверную часть для немедленного возврата ответа об ошибке, я хочу использовать среду тестирования Jasmine и Karma, чтобы смоделировать ее.

Я не могу точно сказать, что это за компонент, но более общим будет, например, выполнение запроса PUT для обновления таблицы лиц в базе данных Salesforce Industries данными JSON из компонент под названием «UpdateIndividualsPage.»

Исходя из этого вопроса для разработчиков Salesforce здесь , и этой страницы документации , шаблонный код для выполнения запроса в функции компонента выглядит примерно так:

this.http.post("https://na7.salesforce.com/services/apexrest/clinic01/v1/individual/", this.myJSON, options).map(response => {

}).catch((error: any) => {

}).subscribe();

где при ответе с ошибкой я бы установил

errorOccurredUponUpdatingIndividualsDatabase = true

при условии, что 'errorOccuredUponUpdatingIndividualsDatabase' является свойством в компоненте UpdateIndividualsPage.

В файле updateindividualspage.component.spec.ts, вложенном в вызов функции description, я бы хотел, чтобы шаблон контрольного примера был примерно таким:

it('should display update error message upon sending improper data to Salesforce database', () => {
});

По сути, последним вызовом функции в моем тесте будет

expect(root_Element_Of_Component.querySelector('#updateErrorMessage').innerText).toBe('Error occurred upon updating the Salesforce Industries individuals database.');

Я прочитал некоторые другие вопросы Stackoverflow о создании фиктивной ошибки HTTP, но я не совсем уверен, потому что, опять же, я все еще новичок в этом.

Жасмин / Карма тестирование Angular 5 HTTP-ответов

макет http запроса в Angular 4

Как тестировать ошибку http в Angular 5?

Я попробовал что-то похожее на последний тестовый пример в исходном коде, заданном в этом вопросе StackOverflow , за исключением того, что я получаю только "Неудачно: ожидается один соответствующий запрос для критериев ...", что означает, что У меня несоответствие URL.

Есть ли способ для этого тестового примера отправить фактический HTTP-запрос на этот сервер, но эта тестовая среда создает ложный ответ? Или мне действительно нужно создать экземпляр MockBackend и заставить его отправить ошибку в виде HTTP-ответа обратно во внешний интерфейс, чтобы поднять флаг errorOccurnUponUpdatingIndividualsDatabase для отображения предупреждения Bootstrap?

Кстати, бэкэнд уже реализован.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Я предпочитаю поддельные HTTP-вызовы в модульных тестах. Таким образом, я исключаю другие переменные. На самом деле вы должны исключить все остальные переменные, кроме компонента, который вы тестируете.

Для насмешливых HTTP-вызовов вы можете использовать nock .

0 голосов
/ 07 сентября 2018

Помимо прочего, самым простым способом может быть создание собственных внутренних страниц, которые возвращают вам коды ошибок (404 и т. Д.).

...