imocha v0.9.2
imocha
In development - work in progress!
Run tests associated to changed files (based on git status).
$ npm install --save-dev imochaor...
$ yarn add -D imochaYou can also choose to install it globally (npm install -g imocha) or run it
through npx (npx imocha). If you have a global imocha and run it on a project
that has its own version of imocha, the project local version will automatically
be used.
If you have a project using mocha and you want to try out imocha without installing it into your project, you can run:
$ npx imochaDescription
When the cli is started, it will map out the test files and each of the source
files that they depend on - this is done through the SourceGraph class.
Then it looks at the dirty files (determined by running git status) and checks
which of the test files would be relevant to run based on which files has been
changed.
The tests are being run by mocha itself - a process is forked off from which
mocha is loaded. This happens on every single run to make sure that there is no
pollution between test runs. This is the responsibility of the MochaWorker class.
The orchestration of the above, and the watching of files are handled within the
MochaWatch class.
Tips
Debugging tests that aren't being picked up
If you experience that some of your tests aren't being executed where they
should, try running imocha with a DEBUG environment variable with the value
true:
$ DEBUG=true imochaThis will output debug information from imocha, and among that it will report
about require and import statements that it saw, but could not resolve. It
could as an example be caused by calling require with a variable as the value,
which would be reported as such:
Unmatched relation: Non literal require. (in /path/to/file.js:18:29)Known limitations
Dynamic imports
With require it is possible to do dynamic imports. This tool only supports
dependencies that are statically analyzable.
// This will not work...
const pathToModule = "../myModule";
require(pathToModule);