automation - 本地存根服务器的赛普拉斯请求 PATCH 调用失败
问题描述
我有一个本地存根服务器,它有一个 PATCH 请求。当我在柏树内调用这个本地端点时,它失败了。我的柏树代码
Cypress.Commands.add('callLocalAPI', (id: string = '1') => {
const options = {
method: 'PATCH',
url: `${Cypress.env().baseUrl}test/api`,
// failOnStatusCode: false,
retryOnStatusCodeFailure: true,
log: true,
body: {
id,
},
}
// we need cy to visit the current URL so it grabs cookie
// for our request
cy.visit('/')
cy.request(options).then((response) => {
if (!String(response.body.id)) {
console.error(response)
throw Error(`Fail to get response with ${id}`)
}
})
})
然后调用这个自定义 cypress 命令
cy.callLocalAPI('2')
当我使用邮递员 (http://localhost:8882/test/api) 访问此端点时,我得到了状态码为 200 的预期响应,因此模拟服务器没有问题。
但是当我运行 cypress 测试时,我总是得到 404。
Status: 404 - Not Found
Headers: {
"server": "stubby/5.0.0 node/v12.19.0 (darwin x64)",
"date": "Fri, 03 Sep 2021 03:36:49 GMT",
"connection": "keep-alive",
"keep-alive": "timeout=5",
"transfer-encoding": "chunked"
}
解决方案
尝试
const options = {
method: 'PATCH',
url: 'test/api',
...
如果您在访问页面后发出 cy.request(),赛普拉斯假定用于 cy.visit() 的 url 是主机。
cy.visit('http://localhost:8080/app')
cy.request('users/1.json') // url is http://localhost:8080/users/1.json
可能只是这一行缺少路径分隔符
url: `${Cypress.env().baseUrl}test/api`
Cypress.env().baseUrl
请注意,此字符串的值为
取自文件
cypress.env.json
(不是cypress.json
){ "baseUrl": "http://localhost:8882/" }
或在命令行中覆盖
cypress open --env baseUrl=http://localhost:8882/
推荐阅读
- python-3.x - 将比例 z 检验应用于数据框中的每条记录
- reactjs - 在 React with Enzyme 中测试 Socket.io 监听器
- c# - 将多个过滤器与 Or 条件组合并将其发送 Simple Odata Client - C#
- r - head() 或 top_n() 函数更改数据集中数值的格式
- mysql - 当我尝试在 sequel pro 中运行此查询时出现错误
- powershell - 使用 foreach 循环执行 powershell 脚本后结果太多
- javascript - 通过 ASIN 获取亚马逊产品图片
- javascript - “var data = jQuery(msg), script;”是什么意思 在javascript中?
- laravel - 如何使用 Laravel 将查询字符串附加到分页链接
- unity3d - 我想知道为什么我的倒数计时器就像我将要描述的那样