TypeScript - Cypress: Tipuri care se ciocnesc cu Jest
Mă confrunt cu problema suprapunerii tipurilor în Cypress și Jest (de exemplu „expect”).
exemplu.spec.ts
expect(value).toBe(0) // Property 'toBe' does not exist on type 'Assertion'.
Am editat tsconfig.json în felul următor, dar nu a rezolvat.
- Eliminați „cypress” din proprietatea „types”
- Exclude fișierele de test Jest din tsconfig.json și declară un alt tsconfig
- Exclude fișierele de testare jest din tsconfig.json și adaugă tsconfig în directorul cypress
Iată tsconfig-ul meu
{
"compilerOptions": {
"target": "ES2018",
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"lib": [
"ESNext",
"ESNext.AsyncIterable",
"DOM"
],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
]
},
"types": [
"@nuxt/types",
"@nuxtjs/axios",
"@types/node",
"nuxt-i18n",
"jest"
]
},
"exclude": [
"node_modules",
".nuxt",
"dist"
]
}
Răspuns #1
Am rezolvat problema cu următoarele:
./tsconfig.json
{
"compilerOptions": {
"isolatedModules": true,
...
},
"exclude": ["cypress/**/*"]
}
./cypress/tsconfig.json
{
"extends": "../tsconfig.json",
"compilerOptions": {
"isolatedModules": false
},
"include": [
"../node_modules/cypress"
]
}
Răspunsul #2
În cazul meu, a fost suficient să exclud numele fișierului de configurare Cypress în tsconfig.json al proiectului. Nu a fost nevoie să pun flag-ul „isolatedModules”.
Exemplu :
"exclude": [
...
"cypress.config.ts",
...
]
Funcționează într-un proiect cu webpack, jest, React Testing Library (cu extensii) și Cypress combinate împreună.
Notă: dacă Webpack-ul tău folosește un tsconfig.json diferit, asigură-te că excluzi fișierul și acolo. Altfel, nu vei vedea nicio eroare în IDE, dar le vei vedea în timpul realizării unei construcții.
