3

After upgrading Jest to v.27.2.5 from v.26 if a test fails it shows me: result.message is not a function

It doesn't matter what I try to test. If it fails, I don't get any meaningful message. My test:

it('should pass', async () => {
  const foo = 2;
  expect(foo).toBe(3);
});

Result:


result.message is not a function
TypeError: result.message is not a function
    at new JestAssertionError (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-chain-npm-1.1.5-5b9906685f-cc8cb9b33a.zip/node_modules/jest-chain/dist/chain.js:10:18)
    at Object.newMatcher [as toBe] (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-chain-npm-1.1.5-5b9906685f-cc8cb9b33a.zip/node_modules/jest-chain/dist/chain.js:31:17)
    at _callee6$ (ROUTE_TO/GitHub/Flow/Flow_FE/src/components/forms/RequestSetNewPasswordForm/RequestSetNewPasswordForm.test.tsx:133:15)
    at tryCatch (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/regenerator-runtime-npm-0.13.9-6d02340eec-65ed455fe5.zip/node_modules/regenerator-runtime/runtime.js:63:40)
    at Generator.invoke [as _invoke] (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/regenerator-runtime-npm-0.13.9-6d02340eec-65ed455fe5.zip/node_modules/regenerator-runtime/runtime.js:294:22)
    at Generator.next (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/regenerator-runtime-npm-0.13.9-6d02340eec-65ed455fe5.zip/node_modules/regenerator-runtime/runtime.js:119:21)
    at asyncGeneratorStep (ROUTE_TO/GitHub/Flow/Flow_FE/src/components/forms/RequestSetNewPasswordForm/RequestSetNewPasswordForm.test.tsx:8:103)
    at _next (ROUTE_TO/GitHub/Flow/Flow_FE/src/components/forms/RequestSetNewPasswordForm/RequestSetNewPasswordForm.test.tsx:10:194)
    at ROUTE_TO/GitHub/Flow/Flow_FE/src/components/forms/RequestSetNewPasswordForm/RequestSetNewPasswordForm.test.tsx:10:364
    at new Promise (<anonymous>)
    at Object.<anonymous> (ROUTE_TO/GitHub/Flow/Flow_FE/src/components/forms/RequestSetNewPasswordForm/RequestSetNewPasswordForm.test.tsx:10:97)
    at Promise.then.completed (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/utils.js:390:28)
    at new Promise (<anonymous>)
    at callAsyncCircusFn (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/utils.js:315:10)
    at _callCircusTest (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/run.js:218:40)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at _runTest (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/run.js:155:3)
    at _runTestsForDescribeBlock (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/run.js:66:9)
    at run (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/run.js:25:3)
    at runAndTransformResultsToJestFormat (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:167:21)
    at jestAdapter (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-circus-npm-27.2.5-f729640db6-35a43f48d6.zip/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:82:19)
    at runTestInternal (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-runner-npm-27.2.5-cb3234bfd1-12daf87276.zip/node_modules/jest-runner/build/runTest.js:389:16)
    at runTest (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-runner-npm-27.2.5-cb3234bfd1-12daf87276.zip/node_modules/jest-runner/build/runTest.js:475:34)
    at TestRunner.runTests (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/cache/jest-runner-npm-27.2.5-cb3234bfd1-12daf87276.zip/node_modules/jest-runner/build/index.js:111:12)
    at TestScheduler.scheduleTests (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/__virtual__/@jest-core-virtual-30a9be5577/0/cache/@jest-core-npm-27.2.5-0bd8b654d5-e140b71fa5.zip/node_modules/@jest/core/build/TestScheduler.js:333:13)
    at runJest (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/__virtual__/@jest-core-virtual-30a9be5577/0/cache/@jest-core-npm-27.2.5-0bd8b654d5-e140b71fa5.zip/node_modules/@jest/core/build/runJest.js:387:19)
    at _run10000 (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/__virtual__/@jest-core-virtual-30a9be5577/0/cache/@jest-core-npm-27.2.5-0bd8b654d5-e140b71fa5.zip/node_modules/@jest/core/build/cli/index.js:320:7)
    at runCLI (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/__virtual__/@jest-core-virtual-30a9be5577/0/cache/@jest-core-npm-27.2.5-0bd8b654d5-e140b71fa5.zip/node_modules/@jest/core/build/cli/index.js:173:3)
    at Object.run (ROUTE_TO/GitHub/Flow/Flow_FE/.yarn/__virtual__/jest-cli-virtual-049064fa1a/0/cache/jest-cli-npm-27.2.5-de57d01272-403468c466.zip/node_modules/jest-cli/build/cli/index.js:155:37)

My Jest config:

/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
module.exports = {
  verbose: false,
  preset: 'ts-jest',
  globals: {
    'ts-jest': {
      isolatedModules: true,
      diagnostics: {
        warnOnly: true,
      },
      babelConfig: true,
    },
  },
  testEnvironment: 'jsdom',
  setupFilesAfterEnv: ['./src/jest/setupTests.ts'],
  modulePathIgnorePatterns: ['<rootDir>/dist/'],
  roots: ['<rootDir>', '<rootDir>/src/', '<rootDir>/src/jest'],
  moduleNameMapper: {
    '\\.(css|less|sass|scss)$': '<rootDir>/src/jest/__mocks__/styleMock.js',
    '\\.(gif|ttf|eot|svg)$': '<rootDir>/src/jest/__mocks__/fileMock.js',
  },
  collectCoverageFrom: [
    'src/**/*.{ts,tsx}',
    '!src/**/*.d.{ts,tsx}',
    '!src/**/*.types.{ts,tsx}',
    '!src/**/types.{ts,tsx}',
    '!src/**/index.{ts,tsx}',
    '!src/**/*.stories.{ts,tsx}',
    '!src/**/clientApi.ts',
    '!src/**/AxiosInstance.ts',
    '!src/**/store.ts',
    '!src/**/type.tsx',
    '!src/storybookComponents/*.*',
  ],
};

setupTests.ts

import 'regenerator-runtime/runtime';
import '@testing-library/jest-dom';
import 'jest-extended';
import 'jest-chain';
import 'jest-mock-axios';

Dependences:

    "@babel/core": "^7.12.10",
    "@babel/plugin-proposal-class-properties": "^7.12.1",
    "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    "@babel/preset-env": "^7.12.11",
    "@babel/preset-react": "^7.12.10",
    "@babel/preset-typescript": "^7.13.0",
    "@mdx-js/react": "^1.6.22",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.4.3",
    "@testing-library/dom": "^8.7.2",
    "@testing-library/jest-dom": "^5.14.1",
    "@testing-library/react": "^12.1.2",
    "@testing-library/react-hooks": "^7.0.2",
    "@testing-library/user-event": "^13.3.0",
    "@typescript-eslint/eslint-plugin": "^4.10.0",
    "@typescript-eslint/parser": "^4.10.0",
    "@welldone-software/why-did-you-render": "^6.2.0",
    "babel-eslint": "^10.1.0",
    "babel-jest": "^27.2.5",
    "babel-loader": "^8.2.2",
    "core-js": "^3.18.2",
    "css-loader": "5.2.6",
    "css-modules-typescript-loader": "^4.0.1",
    "file-loader": "^6.2.0",
    "html-loader": "^2.1.2",
    "html-webpack-plugin": "^5.3.2",
    "image-webpack-loader": "^8.0.1",
    "jest": "^27.2.5",
    "jest-chain": "^1.1.5",
    "jest-extended": "^1.0.0",
    "jest-jasmine2": "^27.2.5",
    "jest-mock-axios": "^4.4.1",
    "js-yaml": "^4.1.0",
    "mini-css-extract-plugin": "^2.4.2",
    "mock-local-storage": "^1.1.17",
    "prettier": "^2.4.1",
    "react-hot-loader": "^4.13.0",
    "react-refresh": "^0.10.0",
    "react-test-renderer": "^17.0.2",
    "redux-logger": "^3.0.6",
    "redux-mock-store": "^1.5.4",
    "redux-saga-test-plan": "^4.0.3",
    "regenerator-runtime": "^0.13.9",
    "sass": "^1.42.1",
    "sass-loader": "10.1.1",
    "style-loader": "2.0.0",
    "ts-dedent": "^2.2.0",
    "ts-jest": "^27.0.5",
    "ts-loader": "^9.2.6",
    "ts-node": "^10.2.1",
    "type-fest": "^2.3.4",
    "typescript": "^4.4.3",
    "url-loader": "^4.1.1",
    "webpack": "^5.58.1",
    "webpack-cli": "^4.9.0",
    "webpack-dev-server": "^4.3.1"
  },

Any ideas?

UPDATE The problem in "jest-chain"

  • Please share full test file, also check here: https://stackoverflow.com/questions/51957794/jest-typeerror-is-not-a-function-in-jest-mock – desertech Oct 12 '21 at 12:08
  • Actually RequestSetNewPasswordForm.test.tsx has only that small test, what I wrote. And nothing more. Only 4 lines. No mocks at all. Moreover this test works well. ``` it('should pass', async () => { const foo = 2; expect(foo).toBe(2); }); ``` The problem is that failed test doesn't give any message except "esult.message is not a function" – Maksim Shteigervald Oct 12 '21 at 12:34
  • The problem in "jest-chain" package. But why... – Maksim Shteigervald Oct 12 '21 at 13:01
  • 1
    Because it's broken, not updated for Jest 27 https://github.com/mattphillips/jest-chain/issues/34 – jonrsharpe Oct 12 '21 at 15:05

0 Answers0