You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

216 lines
5.4 KiB

8 years ago
# Neutrino Mocha Preset
8 years ago
[![NPM version][npm-image]][npm-url] [![NPM downloads][npm-downloads]][npm-url] [![Join Slack][slack-image]][slack-url]
`neutrino-preset-mocha` is a Neutrino preset that supports testing JavaScript projects with the Mocha test runner.
## Features
- Zero upfront configuration necessary to start testing
- Babel compilation that compiles your tests using the same Babel options used by your source code
- Easily extensible to customize your testing as needed
## Requirements
- Node.js v6.9+
- Yarn or npm client
- Neutrino v5, Neutrino build preset
## Installation
`neutrino-preset-mocha` can be installed via the Yarn or npm clients. Inside your project, make sure
`neutrino` and `neutrino-preset-mocha` are development dependencies. You will also be using
another Neutrino preset for building your application source code.
#### Yarn
```bash
❯ yarn add --dev neutrino-preset-mocha
```
#### npm
```bash
❯ npm install --save-dev neutrino-preset-mocha
```
## Project Layout
`neutrino-preset-mocha` follows the standard [project layout](https://neutrino.js.org/project-layout) specified by Neutrino. This
means that by default all project test code should live in a directory named `test` in the root of the
project. Test files end in `_test.js` by default.
## Quickstart
After adding the Mocha preset to your Neutrino-built project, add a new directory named `test` in the root of the
project, with a single JS file named `simple_test.js` in it.
```bash
❯ mkdir test && touch test/simple_test.js
```
Edit your `test/simple_test.js` file with the following:
```js
import assert from 'assert';
describe('simple', () => {
it('should be sane', () => {
assert.equal(true, !false);
});
});
```
Now edit your project's package.json to add commands for testing your application. In this example,
let's pretend this is a Node.js project:
```json
{
"scripts": {
"test": "neutrino test --presets neutrino-preset-node neutrino-preset-mocha"
}
}
```
Or if you have set up Neutrino with `neutrino.presets` in your package.json:
```json
{
"neutrino": {
"presets": [
"neutrino-preset-node",
"neutrino-preset-mocha"
]
}
}
```
Run the tests, and view the results in your console:
#### Yarn
```bash
❯ yarn test
simple
✓ should be sane
1 passing (426ms)
✨ Done in 4.17s.
```
#### npm
```bash
❯ npm test
simple
✓ should be sane
1 passing (409ms)
```
To run tests against files from your source code, simply import them:
```js
import thingToTest from '../src/thing';
```
For more details on specific Mocha usage, please refer to their [documentation](http://mochajs.org/).
## Executing single tests
By default this preset will execute every test file located in your test directory ending in `_test.js`.
Use the command line [`files` parameters](https://neutrino.js.org/cli#neutrino-test) to execute individual tests.
## Customizing
To override the test configuration, start with the documentation on [customization](https://neutrino.js.org/customization).
`neutrino-preset-mocha` creates some conventions to make overriding the configuration easier once you are ready to make
changes.
### Rules
The following is a list of rules and their identifiers which can be overridden:
- `compile`: Compiles JS files from the `test` directory using Babel. Contains a single loader named `babel`. Adopts
Babel configuration from other presets that have been loaded.
### Simple customization
By following the [customization guide](https://neutrino.js.org/customization/simple) you can override and augment the test configuration
directly from package.json. `neutrino-preset-mocha` will import Mocha configuration from your package.json's
`neutrino.options.mocha` object if defined. The format is defined on the
[Mocha documentation site](https://mochajs.org/#usage), with command-line flags mapping to camel-cased options
in `neutrino.options.mocha`.
_Example: Switch the test reporter from the default `spec` to `nyan`:_
```js
{
"neutrino": {
"options": {
"mocha": {
"reporter": "nyan"
}
}
}
}
```
```bash
❯ yarn test
1 -__,------,
0 -__| /\_/\
0 -_~|_( ^ .^)
-_ "" ""
1 passing (362ms)
✨ Done in 3.28s.
```
### Advanced configuration
By following the [customization guide](https://neutrino.js.org/customization/advanced) and knowing the rule, and loader IDs above,
you can override and augment testing by creating a JS module which overrides the config.
You can modify Mocha settings by overriding the preset with any options Mocha accepts. This is stored in the
`neutrino.custom.mocha` object.
_Example: Switch the test reporter from the default `spec` to `nyan`:_
```js
module.exports = neutrino => {
neutrino.options.mocha.reporter = 'nyan';
};
```
```bash
❯ yarn test
1 -__,------,
0 -__| /\_/\
0 -_~|_( ^ .^)
-_ "" ""
1 passing (362ms)
✨ Done in 3.28s.
```
## Contributing
This preset is part of the [neutrino-dev](https://github.com/mozilla-neutrino/neutrino-dev) repository, a monorepo
containing all resources for developing Neutrino and its core presets. Follow the
[contributing guide](https://neutrino.js.org/contributing) for details.
8 years ago
[npm-image]: https://img.shields.io/npm/v/neutrino-preset-mocha.svg
[npm-downloads]: https://img.shields.io/npm/dt/neutrino-preset-mocha.svg
[npm-url]: https://npmjs.org/package/neutrino-preset-mocha
8 years ago
[slack-image]: https://neutrino-slack.herokuapp.com/badge.svg
[slack-url]: https://neutrino-slack.herokuapp.com/