我正在使用 cypress 测试我的登录页面。/api/auth/login
当密码输入字段达到4个字符时,自动触发对我的api的调用。因此,在我的 cypress 规范文件中,该命令cy.get("password-input").type("1234")
足以触发 api 调用。如何获取该 api 调用的响应正文?我想获取我的 api 发回的令牌。
在使用命令的经典 api 调用中,cy.request
我可以轻松处理响应正文,但当 api 请求被另一个事件(如此处的事件)触发时,我找不到如何访问响应正文type
。
目前,我有一个解决方法,因为我的网站将 response.body.token 存储在 localStorage 中,因此我使用window
以下命令访问令牌wait
:
it("should get token", () => {
cy.visit("/login")
cy.get("[data-cy="login-input"]).type("myLogin")
cy.get("[data-cy="password-input"]).type("0001")
cy.wait(5000)
cy.window().then(window => {
cy.log(window.localStorage.getItem("myToken"))
})
})
Run Code Online (Sandbox Code Playgroud)
但这感觉很恶心...你能给我正确的方法来访问事件触发的 api 调用的响应正文吗type
?
您可以使用cy.intercept()
、别名和cy.wait()
:
it("should get token", () => {
cy
.intercept('/api/auth/login')
.as('token');
cy
.visit("/login");
cy
.get('[data-cy="login-input"]')
.type("myLogin");
cy
.get('[data-cy="password-input"]')
.type("0001");
cy
.wait('@token')
.then(intercept => {
// you can now access the request body, response body, status, ...
});
});
Run Code Online (Sandbox Code Playgroud)
有用的阅读:
归档时间: |
|
查看次数: |
9776 次 |
最近记录: |