typescript - jest og jasmine i Angular-projekt
Jeg har effektivt erstattet karma/jasmine med jest i et Angular-projekt, og testene kører godt....men:
Jeg fjernede ikke jasmine (protractor har brug for det), og nu støder jeg på problemet, at hvis jeg bruger spyOn i stedet for jest.spyOn i mine spec-filer, bruger det jasmine-spionen og ikke jest-spionen (som er implementeret forskelligt). Dette er en dårlig udvikleroplevelse, og jeg vil gerne fjerne jasmine helt fra mine enhedstest, men jeg har ingen idé om, hvordan.
Hvordan kan jeg opsætte min tsconfig.spec.json til at udelukke jasmine under kompilering af mine spec-filer?
Jeg bruger jest-preset-angular, som bruger ts-jest.
Hvis jeg ikke har inkluderet nok information, er du velkommen til at plage mig for mere!
Dette er min tsconfig.spec.json-fil:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"module": "commonjs",
"target": "es5",
"baseUrl": ""
},
"files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
Dette er min tsconfig.json-fil:
{
"compileOnSave": false,
"compilerOptions": {
"importHelpers": true,
"outDir": "./dist/out-tsc",
"baseUrl": "public",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es5",
"typeRoots": [
"node_modules/@types" <-- jasmine types are in here too!
],
"lib": [
"es2016",
"dom"
],
"module": "es2015"
}
}
Min jest-konfiguration fortæller ts-jest, at den skal bruge min tsconfig.spec.json-fil sådan her:
"globals": {
"ts-jest": {
...
"tsConfig": "<rootDir>/public/tsconfig.spec.json" <-- here!
}
}
Svar #1
Jest er baseret på Jasmine og inkluderer en "let" version...
...så spyOn eksisterer i Jest-kildekoden.
Det er forældet og uændret dokumenteret, men som du har fundet ud af, fungerer det stadig at kalde det.
Det er sandsynligt, at det helt vil blive fjernet i en fremtidig version af Jest (de gamle Jasmine-dele bliver gradvist fjernet).
For at hjælpe med at spore opkald til spyOn kan du bruge errorOnDeprecated CLI-indstillingen.
Start Jest sådan her:
jest --errorOnDeprecated...og du vil se en fejl logget, hver gang spyOn bliver kaldt i dine tests.