Add Jest

npm install --save-dev jest jest-preset-angular @types/jest
# For Angular v13.
npm install --save-dev jest-preset-angular@next

New scripts in package.json:

"jest": "jest",
"jest:coverage": "jest --coverage",
"jest:coverageWatch": "jest --coverage --watchAll"

New setup-jest.ts file in the root directory:

import 'jest-preset-angular/setup-jest';

New jest.config.js file in the root directory:

// jest.config.js
module.exports = {
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
  testPathIgnorePatterns: [
    '/node_modules/',
    '<rootDir>/src/test.ts'
  ],
  // An array of glob patterns indicating a set of files for which coverage information should be collected
  collectCoverageFrom: [
    "<rootDir>/src/**/*.ts",
    // Exclude main Angular files.
    "!<rootDir>/src/main.ts",
    "!<rootDir>/src/polyfills.ts",
    "!<rootDir>/src/environments/**",
    // Exclude Karma file.
    "!<rootDir>/src/test.ts",
    "!<rootDir>/src/**/*.d.ts",
    '!<rootDir>/node_modules/**',
  ],
  coverageReporters: [
    //"json",
    "text", // Command line output
    "text-summary", // Command line output of the summary
    "lcov",
    //"clover"
  ],
};

You may need to add the following in module.exports if it can't find your imports:

  modulePaths: [ "<rootDir>" ]

New ignore in .gitignore:

# Jest
/coverage

Update tsconfig.spec.json in root directory:

    "types": [
      "jasmine",
      "jest"
    ]

Test

npm run jest