gpt4 book ai didi

typescript - Cypress 在 Jest 断言中导致类型错误

转载 作者:行者123 更新时间:2023-12-02 07:59:45 25 4
gpt4 key购买 nike

我一直在用 react-testing-library以及 @testing-library/jest-dom/extend-expect .我昨天安装了 Cypress,现在我所有的玩笑匹配器都收到 Typescript 错误:
Property 'toEqual' doesn't exist on type 'Assertion'. Did you mean 'equal'?
看起来它的类型是 expect来自错误的断言库还是什么?另外,expect(...).to.equal(...)甚至不起作用。

我实际上尝试安装 @types/jest yarn 似乎成功了,但它没有在我的 package.json 中列出的 devDependencies .

这是我的 tsconfig

{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"noImplicitAny": false,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": false,
"noEmit": true,
"jsx": "react",
"skipDefaultLibCheck": true,
"types": [
"node",
"cypress",
"jest"
]
},
"include": [
"src"
]
}

我还要提一下我所有的 cy我的 cypress 测试中的调用得到了 cy is not defined来自 ESLint 的错误。

最佳答案

我昨天遇到了这个问题。看来你说的是对的,cypress 和 jest 都声明了 expect 的类型.在这种情况下,cypress 声明似乎是被选中的声明。这是 cypress repo 中关于此问题的一个问题:

https://github.com/cypress-io/cypress/issues/1603

那里提到的解决方案对我有用。您需要从 tsconfig.json 中排除 jest 规范文件然后声明一个 tsconfig.spec.json再次明确包含它们的地方。

tsconfig.json:

{
...,
"exclude": [
"**/*.spec.ts"
]
}

tsconfig.spec.json:
{
"extends": "./tsconfig.json",
"include": [
"**/*.spec.ts"
],
...
}

有了这个,我的(angular 8)应用程序都可以正常编译,我可以毫无问题地运行 jest 测试。这是问题中提到的另一个示例,其中正在实现类似的修复:

https://github.com/neiltownsley/react-typescript-cypress/pull/1/files#diff-e5e546dd2eb0351f813d63d1b39dbc48R29

关于typescript - Cypress 在 Jest 断言中导致类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58999086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com