Я подписан на этот блог . Свойство window.app действительно появляется в консоли после добавления кода, как описано, однако я не могу сослаться на app.$store
и упомянуто в блоге (что напоминает способ ссылки на хранилище в компонентах). Я могу сослаться на app.store
, который действительно содержит свойства из моего хранилища vuex, но он не содержит app.store.state
, только получатели (и рассылки и т. Д.).
например. используя const getStore = () => cy.window().its('app.store')
это дает:
Я бы предпочел, чтобы переменные состояния были доступны напрямую, а не только после того, как я сделал геттер. В чем дело? Это потому, что я использую пространство имен в моем магазине Vuex?
EDIT:
Это также может относиться к моему способу назначения магазина для окна. Я использую Quasar Framework, который в текущей версии (> 0.15) выполняет много настроек на основе настроек в файле quasar.conf.js
, который он использует. Я назначил магазин, добавив этот код как квазар-плагин :
export default ({ app, store, Vue }) => {
if (window.Cypress) { // should only be available during E2E tests
window.app = app
}
}
Это действительно дает мне app.store
, о котором я говорил, но не app.$store
(включая state
). Конфигурация Quasar генерируется и отображается в файле, который после добавления этого плагина содержит:
/**
* THIS FILE IS GENERATED AUTOMATICALLY.
* DO NOT EDIT.
*
* You are probably looking on adding initialization code.
* Use "quasar new plugin <name>" and add it there.
* One plugin per concern. Then reference the file(s) in quasar.conf.js > plugins:
* plugins: ['file', ...] // do not add ".js" extension to it.
**/
import './quasar'
import Vue from 'vue'
Vue.config.productionTip = false
import 'quasar-app-styl'
import 'src/css/app.styl'
import App from 'src/App'
import router from 'src/router'
import store from 'src/store'
const app = {
el: '#q-app',
router,
store,
...App
}
const plugins = []
import pluginCypress_vuex_store from 'src/plugins/cypress_vuex_store'
plugins.push(pluginCypress_vuex_store)
import pluginVuelidate from 'src/plugins/vuelidate'
plugins.push(pluginVuelidate)
plugins.forEach(plugin => plugin({ app, router, store, Vue }))
new Vue(app)
Как вы можете видеть, плагины являются частью инициализации приложения Vue, в то время как блог и вы предлагаете его, он присоединяется после инициализации Vue. Поскольку Quasar автоматически генерирует конфигурацию, я не знаю, как сделать 'window.app = app' после инициализации, чтобы посмотреть, не вызывает ли это мою проблему ...