Here is a minimal setup example for Babel 7+, Jasmine 3.5.0, project structure:
☁ jasmine-examples [master] ⚡ tree -a -L 3 -I "node_modules|coverage|.git|.nyc_output"
.
├── .babelrc
├── .editorconfig
├── .gitignore
├── .nycrc
├── .prettierrc
├── LICENSE
├── README.md
├── jasmine.json
├── package-lock.json
├── package.json
└── src
├── helpers
│ ├── console-reporter.js
│ └── jsdom.js
└── stackoverflow
├── 60138152
├── 61121812
├── 61277026
├── 61643544
└── 61985831
8 directories, 12 files
devDependencies:
"@babel/preset-env": "^7.9.6",
"@babel/register": "^7.9.0",
"jasmine": "^3.5.0",
npm scripts:
"scripts": {
"test": "jasmine --config=./jasmine.json",
"coverage": "nyc npm run test && nyc report --reporter=html"
}
jasmine.json
:
{
"spec_dir": "src",
"spec_files": ["**/?(*.)+(spec|test).[jt]s?(x)"],
"helpers": ["helpers/**/*.js", "../node_modules/@babel/register/lib/node.js"],
"stopSpecOnExpectationFailure": false,
"random": true
}
.babelrc
:
{
"presets": ["@babel/preset-env"]
}
Here we need to watch out that the file paths of helpers
:
Array of filepaths (and globs) relative to spec_dir to include before jasmine specs
The file paths in the helpers
option are relative to spec_dir, NOT relative project root path. Which means you should use
"../node_modules/@babel/register/lib/node.js"
NOT
"./node_modules/@babel/register/lib/node.js"
src/61985831/myClass.js
:
export class MyClass {
constructor() {}
}
src/61985831/myClass.spec.js
:
import { MyClass } from './myClass';
describe('my class', function () {
var myClassInstance;
beforeEach(function () {
myClassInstance = new MyClass();
});
it('is an instance of MyClass', function () {
expect(myClassInstance).toBeInstanceOf(MyClass);
});
});
The outcome for the test:
> [email protected] test /Users/ldu020/workspace/github.com/mrdulin/jasmine-examples
> jasmine --config=./jasmine.json "/Users/ldu020/workspace/github.com/mrdulin/jasmine-examples/src/stackoverflow/61985831/myClass.spec.js"
Executing 1 defined specs...
Running in random order... (seed: 66758)
Test Suites & Specs:
(node:57105) ExperimentalWarning: The fs.promises API is experimental
1. my class
✔ is an instance of MyClass (4ms)
>> Done!
Summary:
👊 Passed
Suites: 1 of 1
Specs: 1 of 1
Expects: 1 (0 failures)
Finished in 0.017 seconds
repo here: https://github.com/mrdulin/jasmine-examples