typescript - ts-jest --watch registrerer ikke ændringer i importerede klasseegenskaber
Min opsætning lige nu er ret simpel. Jeg opretter en klasse og kører ts-jest for at tjekke for egenskaberne. Problemet er, når jeg kører "jest --watch" eller "jest --watchAll" og fjerner en egenskab af klassen, fortsætter mine tests med at køre fint. De burde fejle og angive, at "1 argument forventes i stedet for 2", men det gør de ikke. Hvis jeg lukker jest ned og bare kører det normalt igen, fungerer testene fint. Derudover, hvis jeg bare GEMMER inde i test.ts-filen, opdager jest problemet og kaster en fejl.
Jeg prøvede også "--no-cache", når jeg kørte watch, men det virkede ikke. Jeg er forholdsvis ny til Typescript og JEST, så enhver vejledning vil blive værdsat. Her er trin til at reproducere:
- kør "jest --watchAll --no-cache" (valgfrit at køre no-cache, jeg så ingen forskel)
- Fjern de 2 linjer, der har 'value' (linjer markeret nedenfor), og GEM derefter.
- Du burde nu kunne se, at testen stadig består.
- Dræb Jest og kør det derefter igen. Testen fejler nu på grund af modtagelse af et ugyldigt antal argumenter.
Jeg opsatte et grundlæggende TypeScript-projekt og installerede Jest. Her er de relevante filer:
card_types.ts:
export class Card {
// can add things like image and such here.
readonly category: string;
readonly value: number; //<----- Remove me
constructor(c: string, v: number) { //<----- Remove ", v: number"
this.category = c;
this.value = v; //<----- Remove me
}
}
card_types.test.ts:
import { Card } from './card_types';
describe('Card Class', () => {
it('should create an instance of Card with category = Action', () => {
const my_card = new Card('Action');
console.log(my_card);
expect(my_card.category).toBe('Action');
});
});
tsconfig.json:
{
"compilerOptions": {
"target": "es2016",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}
jest.config.js:
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
globals: {
'ts-jest': {
tsconfig: 'tsconfig.json',
},
},
preset: 'ts-jest',
testEnvironment: 'node',
testMatch: ['**/*.test.(ts|js)'],
};