How to assert localStorage in Cypress(如何在Cypress中断言localStorage)
问题描述
我担心我做得不正确,但是文档中没有我找到的明确示例。
我有一个遍历登录流的测试。我还想验证在登录后是否已在localStorage中设置了某些值。
当我执行以下操作时,我收到AssertionError,"预期存在空值":
describe("Trying to log in...", function() {
it("Visits the Home Page", function() {
cy.visit("/") // Uses baseUrl prefix from config
// [ ... snip ... ]
// Form should be visible and fillable now!
cy.get("form")
.should("be.visible")
.within(() => {
cy.findByLabelText(/email address/i)
.should("exist")
.should("be.visible")
.click() // Clicking the label should focus the element:
.type("[test username]")
cy.findByLabelText(/password/i)
.click()
.type("[test password]")
cy.findByText(/sign in/i).click()
})
// Now we're logged in...
cy.url().should("include", "home")
// ========= THE FOLLOWING BREAKS: =======================
// Check for our localStorage item:
expect(localStorage.getItem("KeyToOurValue")).to.exist()
})
})
但是,如果我将回调中expect
放到最后should
,它似乎可以工作?
describe("Trying to log in...", function() {
it("Visits the Home Page", function() {
cy.visit("/") // Uses baseUrl prefix from config
// [ ... snip ... ]
// Form should be visible and fillable now!
cy.get("form")
.should("be.visible")
.within(() => {
cy.findByLabelText(/email address/i)
.should("exist")
.should("be.visible")
.click() // Clicking the label should focus the element:
.type("[test username]")
cy.findByLabelText(/password/i)
.click()
.type("[test password]")
cy.findByText(/sign in/i).click()
})
// Now we're logged in...
cy.url().should("include", "home", ()=> {
// ========= THE FOLLOWING WORKS! ========
// Check for our localStorage item:
expect(localStorage.getItem("KeyToOurValue")).to.exist()
})
})
})
我应该这样做吗?
看起来我应该可以用第一种方法做这件事?
在某个cy
行运行后,如何正确评估有关localStorage值的内容?
推荐答案
是否应在应挡路内断言localStorage?是的,你应该这样做。Check out the official example from Cypress
对于cy-Commands(cy.put,cy.get.),它们被排队,稍后由Cypress陆续运行。另一方面,会立即执行非循环命令(Expect)。因此,如果您离开Expect在Shill()之外,您的localStorage将不可用,因为登录尚未完成。
通过将Expect移到Shill内部,这意味着它在cy.url()完成之后运行。由于cy.url是Cypress内部队列中的最后一项,因此其他Cy命令(cy.access、cy.get、cy.findBy.)已在此时完成。
这篇关于如何在Cypress中断言localStorage的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在Cypress中断言localStorage
基础教程推荐
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 在for循环中使用setTimeout 2022-01-01