Ema*_*sVI 17 javascript integration-testing end-to-end cypress
我在端到端测试中存根api请求,并希望能够根据发出的请求参数返回不同的响应.
目前,无论发布什么内容,我的存根都会返回静态响应,如下所示:
cy.server()
cy.route({
method: 'POST',
url: '**/redeem-code',
status: 200,
response: {
status: "Success"
},
delay: 500
})
Run Code Online (Sandbox Code Playgroud)
我希望能够检查发布的请求参数,然后有条件地决定返回哪个响应.我正在尝试做这样的事情:
cy.server()
cy.route({
method: 'POST',
url: '**/redeem-code',
status: 200,
response: (req) => {
if(req.code == '1234') return { status: "Success" }
else return { status: "Failure" }
},
delay: 500
})
Run Code Online (Sandbox Code Playgroud)
显然,上面的代码不起作用; 这只是我想要做的一个例子.
我知道赛普拉斯允许使用响应方法,但是我找不到我想在他们的文档中做任何事情的语法.如何在响应方法中获取请求参数,以便我可以决定返回哪个响应?
遗憾的是,目前不支持cy.server.
正在此处跟踪该问题:https : //github.com/cypress-io/cypress/issues/521
使用标准的 javascript 模拟。您可以使用 cypress 在测试中运行这个模拟,onBeforeLoad在链接的问题中提到了几次。它不漂亮。希望 cypress 在cy.server.
Tol*_*oli -2
我相信这应该有效
cy.server({
onResponse: ({ status, url, response }) => {
if(url !== 'yoururl') return response;
return {
...response,
body: { status: status === 1234 ? 'success' : 'failure' }
};
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |