为啥我得到 cy.intercept 不是函数?
Posted
技术标签:
【中文标题】为啥我得到 cy.intercept 不是函数?【英文标题】:Why do I get cy.intercept is not a function?为什么我得到 cy.intercept 不是函数? 【发布时间】:2021-12-13 22:34:29 【问题描述】:我正在尝试拦截 POST 请求,但收到以下错误:
enter image description here
这是我的测试文件代码:
enter image description here
我发现了一个类似的问题:
cy.intercept is not a function Cypress test
通过升级 cypress 版本高于 v5.3 解决了这个问题。但我已经有 cypress 版本 6.14.15。该错误似乎只在.Then()
部分上复制,这很奇怪,因为在前一行代码中调用了cy.intercept 函数,而不是在.Then()
部分中。问题到底出在哪里?
编辑: 这是 package.json 文件
"name": "test-project-v2",
"version": "0.1.0",
"private": true,
"scripts":
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"test:e2e": "vue-cli-service test:e2e",
"lint": "vue-cli-service lint"
,
"dependencies":
"axios": "^0.24.0",
"core-js": "^3.6.5",
"vue": "^3.0.0",
"vuex": "^4.0.0-0"
,
"cypress-cucumber-preprocessor":
"nonGlobalStepDefinitions": true
,
"devDependencies":
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-e2e-cypress": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-unit-jest": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"@vue/eslint-config-prettier": "^6.0.0",
"@vue/test-utils": "^2.0.0-0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-prettier": "^3.3.1",
"eslint-plugin-vue": "^7.0.0",
"prettier": "^2.2.1",
"sass": "^1.26.5",
"sass-loader": "^8.0.2",
"typescript": "~3.9.3",
"vue-jest": "^5.0.0-0"
,
"eslintConfig":
"root": true,
"env":
"node": true
,
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended",
"@vue/prettier"
],
"parserOptions":
"parser": "babel-eslint"
,
"rules": ,
"overrides": [
"files": [
"**/__tests__/*.j,ts?(x)",
"**/tests/unit/**/*.spec.j,ts?(x)"
],
"env":
"jest": true
]
,
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
],
"jest":
"preset": "@vue/cli-plugin-unit-jest",
"transform":
"^.+\\.vue$": "vue-jest"
【问题讨论】:
你能分享package.json
文件来检查赛普拉斯的版本吗?
请提供足够的代码,以便其他人更好地理解或重现问题。
@Manuel Abascal 我刚刚分享了 package.json 文件。我还没有尝试过答案,但我今天会告诉你。
【参考方案1】:
我会像这样断言cy.intercept
路由:
cy.wait('@dialog').should(response =>
expect(response.response.statusCode).to.eq(200);
);
respose.body
中的这段代码 sn-p 也有错字:
cy.wait('@dialog').its('respose.body').should('have.Congrats');
我还会检查您的package.json
和您当前安装的Cypress
版本。请注意,cy.intercept()
是在 Cypress 6.0.0
中引入的。
【讨论】:
您好,我尝试了您的回复并且它有效,但它并没有真正回答我的问题。我想使用 cy.intercept 存根 POST 请求。但是当我写下那一行(或实际文档示例中的任何一行)时,它告诉我同样的错误:cy.intercept is not a function... Cypress version: 6.14.15 问题是使用的 cypress 版本是 3。但是在运行 npm cypress --version 时,我得到了 6。当我重新安装 cypress 时,它解决了问题。谢谢! @Manuel以上是关于为啥我得到 cy.intercept 不是函数?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我得到:TypeError:channel.updateOverwrite 不是函数