cypress:无法从窗口对象访问应用程序

Tom*_*mer 0 vue.js cypress

我需要在 cypress 测试中访问我的 vuex 存储,所以我将应用程序添加到我的 main.js 中的 window 对象:

const app = new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");

window.vueApp = app;
Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的登录命令(commands.js)中访问它:

cy
    .request({
      method: "POST",
      url: "http://localhost:8081/api/v1/login",
      body: {},
      headers: {
        Authorization: "Basic " + btoa("administrator:12345678")
      }
    })
    .then(resp => {
      console.log("app:", window.vueApp);
      ...
      window.localStorage.setItem("aq-username", "administrator");
    });
Run Code Online (Sandbox Code Playgroud)

但它总是未定义,我做错了什么?

dwe*_*lle 5

window您使用的是 cypress runner window。如果要访问windowAUT(被测应用程序)的 ,请使用cy.window()命令。

或者您可以使用cy.state('window')which 同步返回 window 对象,但这是未记录的,将来可能会更改。

相关:如果您想在开发控制台中访问您的 AUT,您需要将上下文切换到Your app...

在此处输入图片说明

  • 不需要,我只需要添加`cy.visit("/")` 来初始化应用程序 (2认同)