Estoy probando una aplicación vue que tiene una combinación que se basa en un método de ventana:
export default { data () { return { aurora: window.Aurora || {} } }, methods: { quickView () { const hasQuickViewElement = document.querySelector('#product-quickview') if (hasQuickViewElement && this.id && typeof this.aurora.quickview === 'function') { this.aurora.quickview(this.id) } }, wishlist () { if (this.id && typeof this.aurora.showOverlay === 'function') { this.aurora.showOverlay('#add-shop-list', { prodId: this.id }) } } } }Estoy tratando de burlarme de este objeto de ventana agregando el siguiente código al archivo de soporte
Cypress.on('window:before:load', (win) => { console.log('aaaaaaaaaaaaaaaaaaaaaaaaaaaaa', win) win.Aurora = 'haushuhuashuas' }) Cypress.on('window:load', (win) => { console.log('bbbbbbbbbbbbbbbbbbbbbbbbbbbb', win) console.log(win.Aurora) })Desafortunadamente, cuando se ejecuta la prueba, 'window:before:load' nunca se ejecuta y no ejecuta console.log y no agrega el valor a la ventana. ¿Hay otra forma de interceptar la ventana y agregar datos a la ventana para que mi componente la use cuando se ejecuta la prueba?
Si 'window:before:load' no se ejecuta, tal vez haya colocado ese código en la parte incorrecta de la especificación.
Debe ser antes de la visita, o utilizar una opción de visita
cy.visit('...', { onBeforeLoad: (win) => { ... }, }) Pero sospecho que es posible que Vue no haya configurado win.Aurora en ese momento, ya que primero debe girar.
Prueba de componentes
Al usar el probador de componentes de Cypress, debe dar una { attachTo: ... } .
const win = cy.state('window') win.Aurora = { quickview: () => 'Aurora is mocked' } const wrapper = mount(MyComponent, { attachTo: win }) Ahora el evento window:before:load también se activará.