Quiero verificar la URL sin visitar la página real, básicamente la aplicación está en angularJS y navega usando el método ng-click ($ state.go). He visto demasiadas documentaciones de cypress stub and intercept, pero no he encontrado nada con respecto a este tipo de declaración de problema.
He intentado a continuación
cy.window().then((win) => { cy.stub(win, 'open').as('redirect'); }); cy.get('@redirect').should( 'be.calledWith', 'myUrl' );pero esto se usa para una nueva pestaña, lo necesito para la misma pestaña, ¿alguien puede ayudar con este problema?
Gracias.
Si desea evitar la navegación, depende de cómo lo haga la aplicación.
Aquí se muestra un ejemplo para agregar window.location.replace
Tratar con window.location.replace
También se puede usar con window.location.href .
it('replaces', () => { cy.on('window:before:load', (win) => { win.__location = { replace: cy.stub().as('replace') } }) cy.intercept('GET', 'index.html', (req) => { req.continue(res => { res.body = res.body.replaceAll( 'window.location.replace', 'window.__location.replace') }) }).as('index') cy.visit('index.html') cy.wait('@index') cy.contains('h1', 'First page') cy.get('@replace').should('have.been.calledOnceWith', 'https://www.cypress.io') })Esto es más complicado que un simple stub, porque window.location no puede ser stubed (una medida de seguridad en el navegador).
Gleb Bahmutov muestra cómo interceptar la carga de la página para solucionar el problema.