在量角器测试中允许 4xx HTTP 状态代码

Allow 4xx HTTP status codes in protractor tests

我正在使用 angular 开发前端并开始编写量角器端到端测试。在某些情况下,相应的后端 API 可能 return 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 returns 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 秒吗?

有时读书很辛苦。所以我从 angular 的默认 e2e 测试开始,它还包括以下代码:

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));
});

我假设任何客户端或服务器错误代码都被归类为严重日志。取消注释会使测试变为绿色 :)