自动化工具 cypress 打桩不生效,求解

遁地肥猪 · 2020年03月26日 · 最后由 遁地肥猪 回复于 2020年03月27日 · 1860 次阅读

coding:
it('登录练习', function() {
//登录
cy.visit('/automaticPriceTrackingRule')
cy.get('#username').type('user1')
cy.get('#password').type('123456')
cy.get('.formsubmit_btn').click()
//打桩
cy.server()
cy.fixture('followRule.json').as('followRules')
cy.route('/api/pricing/followCatRule/list','@followRules').as('getinfo')
cy.wait(5000)
cy.get('.ant-form-item-children > .ant-btn').click()
cy.wait('@getinfo')
})

对网络请求进行了打桩,打桩接口为:

但是在测试中仍旧按服务器进行了返回,并没有拦截住,请哪位能帮忙指点下

共收到 2 条回复 时间 点赞

自问自答,定位到该请求的 type 为:fetch,所以 cypress 无法拦截这个请求

问题已解决,目前 cypress 还无法支持类型为 fetch 的请求拦截,官网是这么描述的:If the type shows xhr, Cypress can see it. If the type says fetch, Cypress cannot intercept it yet.
但是可以通过其他方式解决,有采用:
Cypress.on('window:before:load', (win) => {
delete win.fetch
})
但是没能解决,执行出来,页面显示:您的浏览器不能正确浏览当前网站
后来通过如下方案解决了该问题,留做备注:
1.yarn add @rckeller/cypress-unfetch
2.在// support/index.js 中写入:
import "@rckeller/cypress-unfetch";
问题解决,可正常拦截 type 为 fetch 的请求

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册