javascript - 在柏树中两次存根相同的端点
问题描述
我想对同一个 API 端点进行两次存根,因此第二次调用返回的响应与第一次不同。这是我想象的如何工作的片段:
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
我第一次尝试登录时拒绝访问,我更改了表单输入,然后它应该让我进入。
我试图将第二个cy.route(...)
定义包装为第一个输出的回调函数,但赛普拉斯拒绝调用cy.anything
承诺。就像下面的例子
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401, onResponse: () => {
cy.fixture('login_screen/login_success_response.json').as('loginSuccessResponse')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')}
}}).as('loginFail')
这是我的测试用例:
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
cy.get("form input[type='email']").type("bad@email.com")
cy.get("form input[type='password']").type("Bad password")
// this should fail
cy.get("form").submit()
cy.get("form input[type='password']").type("g00d@password.com")
// this should let me in
cy.get("form").submit()
解决方案
每次你定义.route('VERB', '/endpoint', ...)
它都会覆盖你之前的定义。最简单的解决方案是在您完成第一次通话后覆盖此端点
Filip,这个测试对你有用。
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.get("form input[type='email']").type("bad@email.com")
cy.get("form input[type='password']").type("Bad password")
// this should fail
cy.get("form").submit()
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
cy.get("form input[type='password']").type("g00d@password.com")
// this should let me in
cy.get("form").submit()
推荐阅读
- python-3.x - 无法使用 UNet 训练图像分割模型
- asp.net-core - 是否可以将 .Net Core 配置为使用文件系统来缓存响应?
- c - 在动画期间在OpenGL中获取鼠标点击坐标?
- javascript - 反应:当活动不起作用时更改按钮颜色
- verilog - 如何在 FPGA 的 Verilog 中找到 2 个脉冲之间的中间点?
- jquery - jQuery 表单更改检测异常
- python - 如何使用 graph_tool 获取点阵图的 XY 坐标
- html - 将文本传递给 php 脚本后如何自动删除 html 文本字段的内容?
- visual-studio-code - Snapcraft 安装后找不到已安装的 VS Code
- bash - 您如何在多个目录中移动特定文件扩展名的文件,一个目录在各自目录中更深?