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:

  1. kør "jest --watchAll --no-cache" (valgfrit at køre no-cache, jeg så ingen forskel)
  2. Fjern de 2 linjer, der har 'value' (linjer markeret nedenfor), og GEM derefter.
  3. Du burde nu kunne se, at testen stadig består.
  4. 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)'],
};

Relaterede artikler