|
| 1 | +# Example setup using Jest and EJS |
| 2 | + |
| 3 | +It can be a bit tricky to see how to use EJS modules with Jest. The error message you get is not very helpful. This is a simple example of how to set up Jest to work with EJS. |
| 4 | + |
| 5 | +1. Look in `package.json` |
| 6 | +1. Under `scripts` you will see `"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"` instead of just `"test": "jest"` |
| 7 | +1. The next necessary condition is to define this set of properties and values |
| 8 | + ``` |
| 9 | + "jest": { |
| 10 | + "testEnvironment": "node", |
| 11 | + "transform": {} |
| 12 | + } |
| 13 | + ``` |
| 14 | +1. This is what the documentation is trying to explain https://jestjs.io/docs/ecmascript-modules but it is not very clear. |
| 15 | + |
| 16 | + |
| 17 | +### Example error |
| 18 | + |
| 19 | +``` |
| 20 | +npm test book.test.js |
| 21 | +
|
| 22 | + |
| 23 | +> jest book.test.js |
| 24 | +
|
| 25 | + FAIL ./book.test.js |
| 26 | + ● Test suite failed to run |
| 27 | +
|
| 28 | + Jest encountered an unexpected token |
| 29 | +
|
| 30 | + Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax. |
| 31 | +
|
| 32 | + Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration. |
| 33 | +
|
| 34 | + By default "node_modules" folder is ignored by transformers. |
| 35 | +
|
| 36 | + Here's what you can do: |
| 37 | + • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it. |
| 38 | + • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript |
| 39 | + • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config. |
| 40 | + • If you need a custom transformation specify a "transform" option in your config. |
| 41 | + • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option. |
| 42 | + You'll find more details and examples of these config options in the docs: |
| 43 | + https://jestjs.io/docs/configuration |
| 44 | + For information about custom transformations, see: |
| 45 | + https://jestjs.io/docs/code-transformation |
| 46 | +
|
| 47 | + Details: |
| 48 | +
|
| 49 | + /home/USER/Desktop/CYF/Module-Data-Flows/debugging/book-library/book.test.js:1 |
| 50 | + ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,jest){import createBook from "./book"; |
| 51 | + ^^^^^^ |
| 52 | +
|
| 53 | + SyntaxError: Cannot use import statement outside a module |
| 54 | +
|
| 55 | + at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1505:14) |
| 56 | +
|
| 57 | +Test Suites: 1 failed, 1 total |
| 58 | +Tests: 0 total |
| 59 | +Snapshots: 0 total |
| 60 | +Time: 0.194 s |
| 61 | +Ran all test suites matching /book.test.js/i. |
| 62 | +``` |
0 commit comments