Cypress - 模拟窗口属性

Dvi*_*vir 2 javascript cypress

我有一个使用 window.foo.abc 作为显示某些内容的条件的代码。

我想用 cypress 测试这个功能,并且我想模拟这个值是 false 还是 true。

我怎样才能做到这一点?

我试过了

 before(function() {
      Cypress.on('window:before:load', win => {
        win.foo.abc = true;
      });
Run Code Online (Sandbox Code Playgroud)

  cy.window().then(win => {
    window.foo.abc = true;
  });
Run Code Online (Sandbox Code Playgroud)

没有成功。

我如何模拟这个值?

谢谢

Fod*_*ody 5

这段代码不正确,

Cypress.on('window:before:load', win => {
  window.foo.abc = true;
});
Run Code Online (Sandbox Code Playgroud)

它应该是

Cypress.on('window:before:load', win => {
  win.foo.abc = true;
});
Run Code Online (Sandbox Code Playgroud)

您不必在 中使用它before(),但它应该位于规范的顶部。

但我怀疑纠正后它仍然无法工作,很可能应用程序foo在加载期间重置为新对象,即在cy.visit()

您可以使用第二个块

cy.visit('...')  // visit before changing

cy.window().then(win => {
  win.foo.abc = true;            // correct the syntax here as well
})
Run Code Online (Sandbox Code Playgroud)