Ask Your Question
4

How can jest's expect.extend() be applied to a specific test file using TypeScript?

asked 2022-11-20 11:00:00 +0000

ladyg gravatar image

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
3

answered 2022-03-19 02:00:00 +0000

lalupa gravatar image

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.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss

Add Answer


Question Tools

Stats

Asked: 2022-11-20 11:00:00 +0000

Seen: 9 times

Last updated: Mar 19 '22