Разрешить коды статуса HTTP 4xx в тестах транспортира - PullRequest
0 голосов
/ 20 апреля 2020

Я разрабатываю интерфейс с angular и начал писать тесты для транспортира e2e. Соответствующий внутренний API может в некоторых случаях возвращать 401, 404 или другие клиентские ошибки.

Ниже приведен фрагмент кода, в котором проверяется вход в систему:

it('should block unregistered users', () => {
  page.navigateTo()
  expect(page.showsLogin()).toBe(true);
  page.login("test", "test"); // http request against API happens here
  expect(page.showsLogin()).toBe(true);
});

Проверка завершается неудачно, поскольку API возвращает 404, но это ожидается.

✗ should block unregistered users
  - Expected [ Entry({ level: SEVERE, message: 'http://localhost:4200/api/v1/auth - Failed to load resource: the server responded with a status of 404 (Not Found)', timestamp: 1587332452811, type: '' }) ] not to contain <jasmine.objectContaining(Object({ level: SEVERE }))>.

Как я могу заставить тест работать? (Я не хочу вызывать API напрямую из теста)

Или я должен спроектировать мой API и тесты, чтобы иметь только 200 с?

1 Ответ

0 голосов
/ 20 апреля 2020

Иногда трудно читать. Поэтому я начал с теста e2e по умолчанию с angular, который также включает следующий фрагмент кода:

afterEach(async () => {
  // Assert that there are no errors emitted from the browser
  const logs = await browser.manage().logs().get(logging.Type.BROWSER);
  expect(logs).not.toContain(jasmine.objectContaining({
      level: logging.Level.SEVERE,
  } as logging.Entry));
});

Я предполагаю, что любые коды ошибок клиента или сервера классифицируются как серьезные журналы. Если раскомментировать это, тест становится зеленым:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...