Взгляните на этот пост Тестирование ... с Vuex Store ... , ключом является добавление ссылки на приложение Vue в окно,
const app = new Vue({
store,
el: '.todoapp'
//
})
if (window.Cypress) {
// only available during E2E tests
window.app = app
}
затемпроверьте хранилище на наличие соответствующих ключей, прежде чем приступить к тестированию DOM
const getStore = () => cy.window().its('app.$store')
it('has loading, newTodo and todos properties', () => {
getStore().its('state').should('have.keys', ['loading', 'newTodo', 'todos'])
})
Однако это может быть даже проще!
Вы говорите
Следующий элемент, с которым я хочу взаимодействовать, является пустым до создания магазина.
При правильном сочетании команд Cypress будет ожидать получения содержимого через аксиос, пока вы выберете правильный 'индикатор 'element и проверьте его content , например
cy.contains('my.next.element.i.want.to.interact.with', 'the.content.fetched.with.axios', { timeout: 10000 })
Это ожидает до 10 секунд, пока не отобразится извлеченное содержимое (или меньше, если оно появляется раньше).Без параметра тайм-аута он ожидает до 5 секунд, что может быть достаточно.
ПРИМЕЧАНИЕ , существует небольшая ловушка с командами Cypress.
Не используйте
cy.get('my.next.element.i.want.to.interact.with')
.contains('the.content.fetched.with.axios')
, поскольку ваш шаблон Vue, возможно, с самого начала имеет тег элемента или класс, но его содержимое изначально пусто, и этот шаблон будетне ждите контента, который вы хотите увидеть .Он будет просто сравнивать исходное содержимое (ничего), не дожидаясь завершения выборки.