这里是柏树新手。我试图在页面完全加载之前将数据填充到3个不同的提示中。然后将这些值添加到会话存储中。我的理解是,由于网站没有完全加载,我无法链接cy.visit()
,所以我一直在使用onBeforeLoad
,所以我可以填充这些提示的数据:
before(function() {
cy.visit(base_url, {
onBeforeLoad(win) {
cy.stub(win, 'prompt').returns('someString').as('stub1')
cy.stub(win, 'prompt').returns('someOtherString').as('stub2')
cy.stub(win, 'prompt').returns('anotherString').as('stub3')
}
})
})
问题是,当我查看"Spies/Stubs"我只看到stub1
被使用了3次,而不是3个不同的存根被使用一次。
我也得到了错误TypeError: Attempted to wrap prompt which is already wrapped
任何帮助都将是非常感激的。
提前感谢大家。
编辑:
做类似
的事情before(function() {
cy.visit(base_url, {
onBeforeLoad(win) {
demo_site_info.forEach(element => {
cy.stub(win, 'prompt').callsFake(() => {
return element
})
});
}
})
})
返回TypeError:Attempted to wrap prompt which is already wrapped
使用callsFake(fn)
允许多个假值
it('fakes return values multiple times', () => {
const mod = {
doit: () => 'done'
}
let call = 0
const fakes = ['done1', 'done2', 'done3']
cy.stub(mod, 'doit').callsFake(() => {
return fakes[call++]
})
console.log(mod.doit()) // done1
console.log(mod.doit()) // done2
console.log(mod.doit()) // done3
console.log(mod.doit()) // undefiend
})