Home > Mobile >  How to disable "Use Strict" in Jest
How to disable "Use Strict" in Jest

Time:07-13

I am writing some unit tests for a codebase which uses octal literals. Whenever the test is executed with npm test, a syntax error appears as follows:

Legacy octal literals are not allowed in strict mode.

I should stress that "use strict" does not appear anywhere in the source code, nor can I identify any option in package-lock.json or package.json indicating strict mode. Both JSON files were created with the npm init -y and received no further modification except the addition of:

  "scripts": {
    "test": "jest"
  },

How can I force Jest out of strict mode in order to test code with legacy octal literals?

CodePudding user response:

Per the docs:

By default, Jest will use babel-jest transformer

You can explicitly tell Jest you don't want it to try to apply any transforms by setting the following Jest configuration (e.g. in jest.config.<ext> or under $.jest in the package file):

"transform": {}

See full example below. Alternatively, you can leave Babel's transforms active but configure it with "sourceType": "script".


  • package.json:

    {
      "name": "strict-jest",
      "version": "0.1.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "jest"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "jest": "^28.1.2"
      },
      "jest": {
        "transform": {}
      }
    }
    
  • index.test.js:

    it("works", () => {
      expect(0100).toEqual(64);
    });
    
  • Output:

    $ npm t
    
    > [email protected] test
    > jest
    
     PASS  ./index.test.js
      ✓ works (2 ms)
    
    Test Suites: 1 passed, 1 total
    Tests:       1 passed, 1 total
    Snapshots:   0 total
    Time:        0.257 s
    Ran all test suites.
    
  • Related