为什么我得到 cy.intercept is not a function?

Why do I get cy.intercept is not a function?

我正在尝试拦截 POST 请求,但出现以下错误:

enter image description here

这是我的测试文件代码:

enter image description here

我发现了一个类似的问题:

该问题已通过将 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,t}s?(x)",
          "**/tests/unit/**/*.spec.{j,t}s?(x)"
        ],
        "env": {
          "jest": true
        }
      }
    ]
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ],
  "jest": {
    "preset": "@vue/cli-plugin-unit-jest",
    "transform": {
      "^.+\.vue$": "vue-jest"
    }
  }
}

我会像这样断言 cy.intercept 路由:

cy.wait('@dialog').should(response => {
    expect(response.response.statusCode).to.eq(200);
});

您在 respose.body 中的这段代码中也有拼写错误:

cy.wait('@dialog').its('respose.body').should('have.Congrats');

我还会检查您的 package.json 和当前安装的 Cypress 版本。请注意 cy.intercept() 是在 Cypress 6.0.0 中引入的。