Skip to content

Commit fdf8a39

Browse files
committed
add example for EJS setup and Jest
it doesn't cover jest dom
1 parent 35b6a65 commit fdf8a39

File tree

4 files changed

+96
-0
lines changed

4 files changed

+96
-0
lines changed

debugging/exampleEJS/package.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "book-library",
3+
"version": "1.0.0",
4+
"description": "## topics: debugging, DOM",
5+
"main": "script.mjs",
6+
"type": "module",
7+
"scripts": {
8+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"
9+
},
10+
"dependencies": {
11+
"jest": "^29.7.0"
12+
},
13+
"jest": {
14+
"testEnvironment": "node",
15+
"transform": {}
16+
}
17+
}

debugging/exampleEJS/readme.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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+
```

debugging/exampleEJS/script.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
function exampleFunction() {
3+
return true
4+
}
5+
6+
export default exampleFunction;
7+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//check import works
2+
import exampleFunction from './script';
3+
// check these functions exist
4+
describe('Basic test', () => {
5+
test('exampleFunction exists', () => {
6+
expect(exampleFunction).toBeDefined();
7+
});
8+
});
9+
10+

0 commit comments

Comments
 (0)