赛普拉斯拦截不匹配状态为 204 的路由

Cypress intercept does not match route with status 204

我正在我们的 Angular 应用程序中实施 cypress 测试,但在等待请求完成时遇到问题。我猜这与请求的状态为 204 而不是 200 有关。

这是我在测试中调用的 function/command:

export function logout() {
    cy.intercept('/api/security/logout').as('logoutRequest');
    cy.getCookie('SESSION').then((cookie) => {
        if (cookie != null) {
            cy.request(
                {
                    method: 'POST',
                    url: '/api/security/logout',
                }
            );
        }
    });
    cy.wait('@logoutRequest');
}

我的问题是,路由 /api/security/logout 未被识别为别名 @logoutRequest,因此等待总是超时。即使有一个有效的请求。正如您在测试协议中看到的:

我试过用*或**修改路线但没有成功。如果你能帮助我,我会很高兴。

你不能用cy.intercept()来捕捉cy.request()

cy.intercept(), cy.server(), and cy.route()

cy.request() sends requests to actual endpoints, bypassing those defined using cy.route() or cy.intercept()

只需链接 .then() 处理回复的请求

cy.request({method: 'POST', url: '/api/security/logout', failOnStatusCode: false})
  .then(response => {
    expect(response.status).to.eq(200)
  })