gpt4 book ai didi

javascript - Cypress stub 似乎产生来自实际服务器的响应

转载 作者:行者123 更新时间:2023-11-28 21:08:21 24 4
gpt4 key购买 nike

在现有项目中试用 Cypress 时,我遇到了对路由进行 stub 响应的问题。此文档文章中解释了该概念:https://docs.cypress.io/api/commands/route.html#Without-Stubbing .

这是一个最小的非工作示例。我正在尝试获取一个空对象作为响应主体:

describe('The new event page', () => {

it('responds with the stub', () => {
cy.server();
cy.route('/dummypath', {});
cy.request('GET', '/dummypath');
});

});

stub 路由清楚地显示在 GUI 中:

Picture showing the routes registered in the Cypress GUI

但响应是 404:

Server responds with a 404

... 正文如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /dummypath</pre>
</body>

我认为 404 响应是由我的实际服务器而不是 cy.server() 发送的。实际服务器在 localhost:3000 上运行,我已在我的 cypress.json 文件中将其指定为 baseUrl

有人见过类似的东西吗?我是否忽略了代码中的任何明显错误?

附言:当我将端口号更改为其他某个未使用的端口时,错误会变为网络错误(这可能是预料之中的)。

 CypressError: cy.request() failed trying to load:

http://localhost:3002/dummypath

We attempted to make an http request to this URL but the request failed without a response.

We received this error at the network level:

> Error: connect ECONNREFUSED 127.0.0.1:3002

-----------------------------------------------------------

The request we sent was:

Method: GET
URL: http://localhost:3002/dummypath

-----------------------------------------------------------

Common situations why this would fail:
- you don't have internet access
- you forgot to run / boot your web server
- your web server isn't accessible
- you have weird network configuration settings on your computer

最佳答案

cy.request()向指定的 url 发出实际的 HTTP 请求。在您不想加载实际应用程序的情况下应该使用此命令。例如,您可能想检查服务器上的端点。

cy.route()用于处理在您正在测试的应用程序中发出的 HTTP 请求。

如果您想对正在测试的应用程序发出的 HTTP 请求进行响应,您可能希望结合使用 cy.route().wait()。例如,为确保当我们访问我们的应用程序时,我们的应用程序向 /dummypath 发出 GET 请求,并且对该请求的响应是我们 stub 的 {},我们会写:

describe('The new event page', () => {

it('responds with the stub', () => {
cy.server();
cy.route('/dummypath', {}).as('getDummy');
cy.visit('http://localhost:3002'); // the url to visit in your app
cy.wait('@getDummy').its('responseBody')
.should('be.an', 'object')
.and('be.empty');
});

});

关于javascript - Cypress stub 似乎产生来自实际服务器的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47141308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com