Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

To apply jest's expect.extend() method to a specific test file using TypeScript, you can follow these steps:

  1. Create a file called setup-tests.ts in the same directory as your test file.

  2. Inside setup-tests.ts, import @jest/globals and the TypeScript types for ExpectExtendMap and Matchers.

    import '@jest/globals';
    import { ExpectExtendMap, Matchers } from '@jest/types';
    
  3. Define your custom matcher by extending Matchers and exporting it.

    export interface CustomMatchers extends Matchers<unknown> {
     toBeValidEmail(): void;
    }
    
    export const customMatchers: ExpectExtendMap = {
     toBeValidEmail(received) {
       // validation logic here
       expect(received).toBeTruthy();
     },
    };
    
  4. In your test file, import setup-tests.ts and call expect.extend() with your custom matcher.

    import './setup-tests';
    
    it('should validate email addresses', () => {
     expect('example@domain.com').toBeValidEmail();
    });
    
  5. Ensure that your test file is being transpiled by TypeScript by adding the appropriate configuration in tsconfig.json.

    {
     "compilerOptions": {
       "target": "esnext",
       "module": "commonjs",
       "esModuleInterop": true,
       "outDir": "dist",
       "types": ["jest"],
       "typeRoots": ["./node_modules/@types", "./src/types"],
       "strict": true
     },
     "include": ["src/**/*", "test/**/*"],
     "exclude": ["node_modules", "**/*.spec.*", "**/__tests__/*"]
    }
    

That's it! You can now use your custom matcher in your test file.