4.0.8 • Published 2 years ago

mocha-per-file v4.0.8

Weekly downloads
7
License
MIT
Repository
github
Last release
2 years ago

mocha-per-file

This CLI tool allows to organize mocha tests in files and directories. It works by traversing the test directory recursively, creating describe blocks per directory and tests per *.test.js file.

Install

# npm
$ npm install mocha-per-file

# Yarn
$ yarn add mocha-per-file

Usage

Setup the directory structure

|- src
|- test
   |- api
   |  |- empty-input.test.js
   |  |- array.test.js
   |  |- exception.test.js
   |- cli
      |- args.test.js
      |- options.test.js

Writing the tests

// empty-input.test.js

const expect = require('expect')

// simple test
module.exports = () => expect(1).toEqual(1)

// test with timeout
module.exports = {
  it: expect(1).toEqual(2),
  timeout: 5000,
}

// test only this file
module.exports = {
  it: expect(1).toEqual(2),
  only: true,
}

Calling mocha-per-file

In npm test in package.json:

{
  "scripts": {
    "test": "mocha-per-file"
  }
}

Via bash:

$ npx mocha-per-file

api
  ✓ empty-input
  ✓ array
  ✓ exception

cli
  ✓ args
  ✓ options

Specifying the root directory to search for tests:

$ npx mocha-per-file --path special-tests

Passing parameters to mocha

Some mocha parameters are also supported and can be passed through. For information on this, check out mocha-per-file --help.

$ npx mocha-per-file --require @babel/register

If more are needed feel free to open an issue or a PR! 😃

Execute only some tests

You can execute only some of the tests by providing a filename or glob. Please mind that the path has to be relative to the specified test folder.

$ npx mocha-per-file empty-input.test.js
$ npx mocha-per-file api/*

Changing directories

It is possible to tell mocha-per-file to chdir into the directory of each test file when running the tests via the --chdir parameter:

$ npx mocha-per-file --chdir

This makes it much easier to work with local fixtures:

// files.test.js

const expect = require('expect')
const { readFile } = require('fs-extra')

// process.cwd() is now in the test directory
module.exports = async () => expect(await readFile('foo.txt', 'utf8')).toEqual('foo')

Using with-local-tmp-dir

with-local-tmp-dir is a package that allows us to create a temporary folder inside a given directory and remove it after having finished a callback. This makes it the perfect tool to run file-based tests. The following snippet illustrates this:

// files.test.js

const expect = require('expect')
const { writeFile, readFile } = require('fs-extra')

module.exports = () => withLocalTmpDir(async () => {
  await writeFile('foo.txt', 'foo')
  expect(await readFile('foo.txt', 'utf8')).toEqual('foo')
})

Contribute

Are you missing something or want to contribute? Feel free to file an issue or a pull request! ⚙️

Support

Hey, I am Sebastian Landwehr, a freelance web developer, and I love developing web apps and open source packages. If you want to support me so that I can keep packages up to date and build more helpful tools, you can donate here:

Thanks a lot for your support! ❤️

License

MIT License © Sebastian Landwehr

4.0.8

2 years ago

4.0.7

2 years ago

4.0.6

3 years ago

4.0.5

3 years ago

4.0.4

3 years ago

4.0.3

3 years ago

4.0.2

3 years ago

3.0.8

3 years ago

4.0.1

3 years ago

4.0.0

3 years ago

3.0.7

3 years ago

3.0.6

3 years ago

3.0.4

3 years ago

3.0.5

3 years ago

3.0.3

3 years ago

3.0.2

3 years ago

3.0.1

3 years ago

2.0.11

3 years ago

3.0.0

3 years ago

2.0.10

3 years ago

2.0.9

4 years ago

2.0.8

4 years ago

2.0.7

4 years ago

2.0.6

4 years ago

2.0.5

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

1.2.6

4 years ago

2.0.0

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.1

4 years ago

1.2.0

4 years ago

1.1.4

4 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago