我担心自己的操作不正确,但是文档中没有明确的示例。
我有一个通过登录流程的测试。我还想验证登录后是否在localStorage内设置了某些值。
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值的资产的正确方法是什么?
答案 0 :(得分:1)
您应该在should块中声明localStorage吗?是的你应该。 Check out the official example from Cypress
对于 cy命令(cy.put,cy.get ...),它们已入队并由Cypress接连运行。另一方面,非cy命令(期望)会立即执行。因此,如果期望留在 should()之外,则您的localStorage将不可用,因为登录尚未完成。
通过在应该内部移动期望,这意味着它在完成 cy.url()之后运行。由于 cy.url 是赛普拉斯内部队列中的最后一项,因此其他cy命令(cy.visit,cy.get,cy.findBy ...)已经完成。 >