mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-12 17:45:49 +08:00
161 lines
4.6 KiB
Markdown
161 lines
4.6 KiB
Markdown
# karma-mocha
|
|
|
|
[](https://github.com/karma-runner/karma-mocha)
|
|
[](https://www.npmjs.com/package/karma-mocha) [](https://www.npmjs.com/package/karma-mocha)
|
|
|
|
[](https://travis-ci.org/karma-runner/karma-mocha) [](https://david-dm.org/karma-runner/karma-mocha) [](https://david-dm.org/karma-runner/karma-mocha#info=devDependencies)
|
|
|
|
> Adapter for the [Mocha](http://mochajs.org/) testing framework.
|
|
|
|
## Installation
|
|
|
|
Install `karma-mocha` and `mocha` into to your project via `npm`:
|
|
|
|
```shell
|
|
$ npm install karma-mocha mocha --save-dev
|
|
```
|
|
|
|
`karma-mocha` should work with any version of `mocha`.
|
|
|
|
Since `karma-mocha` is an adapter for [Karma](http://karma-runner.github.io), you likely have it installed already, but in case you don't:
|
|
|
|
```shell
|
|
$ npm install karma --save-dev
|
|
```
|
|
|
|
If you're having trouble, Karma provides [detailed instructions](http://karma-runner.github.io/1.0/intro/installation.html) on installation.
|
|
|
|
## Configuration
|
|
Following code shows the default configuration...
|
|
```js
|
|
// karma.conf.js
|
|
module.exports = function(config) {
|
|
config.set({
|
|
frameworks: ['mocha'],
|
|
|
|
files: [
|
|
'*.js'
|
|
]
|
|
});
|
|
};
|
|
```
|
|
|
|
If you want to pass configuration options directly to mocha you can
|
|
do this in the following way
|
|
|
|
```js
|
|
// karma.conf.js
|
|
module.exports = function(config) {
|
|
config.set({
|
|
frameworks: ['mocha'],
|
|
|
|
files: [
|
|
'*.js'
|
|
],
|
|
|
|
client: {
|
|
mocha: {
|
|
// change Karma's debug.html to the mocha web reporter
|
|
reporter: 'html',
|
|
|
|
// require specific files after Mocha is initialized
|
|
require: [require.resolve('bdd-lazy-var/bdd_lazy_var_global')],
|
|
|
|
// custom ui, defined in required file above
|
|
ui: 'bdd-lazy-var/global',
|
|
}
|
|
}
|
|
});
|
|
};
|
|
```
|
|
|
|
If you want run only some tests matching a given pattern you can
|
|
do this in the following way
|
|
|
|
```sh
|
|
karma start &
|
|
karma run -- --grep=<pattern>
|
|
```
|
|
|
|
or
|
|
|
|
```js
|
|
module.exports = function(config) {
|
|
config.set({
|
|
...
|
|
client: {
|
|
mocha: {
|
|
grep: '<pattern>', // passed directly to mocha
|
|
...
|
|
}
|
|
...
|
|
}
|
|
});
|
|
};
|
|
```
|
|
|
|
If you want to expose test properties specific to `mocha`, you can use the `expose` option:
|
|
|
|
```js
|
|
module.exports = function(config) {
|
|
config.set({
|
|
...
|
|
client: {
|
|
mocha: {
|
|
expose: ['body'] // This will be exposed in a reporter as `result.mocha.body`
|
|
...
|
|
}
|
|
...
|
|
}
|
|
});
|
|
};
|
|
```
|
|
|
|
If you already have a configuration for Mocha in an opts file, you can use the `opts` option:
|
|
|
|
```js
|
|
module.exports = function(config) {
|
|
config.set({
|
|
...
|
|
client: {
|
|
mocha: {
|
|
opts: 'test/mocha.opts' // You can set opts to equal true then plugin will load opts from default location 'test/mocha.opts'
|
|
...
|
|
}
|
|
...
|
|
}
|
|
});
|
|
};
|
|
```
|
|
|
|
## Internals
|
|
|
|
On the end of each test `karma-mocha` passes to `karma` result object with fields:
|
|
|
|
* `description` Test title.
|
|
* `suite` List of titles of test suites.
|
|
* `success` True if test is succeed, false otherwise.
|
|
* `skipped` True if test is skipped.
|
|
* `time` Test duration.
|
|
* `log` List of errors.
|
|
* `startTime` Milliseconds since epoch that the test started
|
|
* `endTime` Milliseconds since epoch that the test ended
|
|
* `assertionErrors` List of additional error info:
|
|
* `name` Error name.
|
|
* `message` Error message.
|
|
* `actual` Actual data in assertion, serialized to string.
|
|
* `expected` Expected data in assertion, serialized to string.
|
|
* `showDiff` True if it is configured by assertion to show diff.
|
|
* `mocha` An optional object listed if you use the `expose` option
|
|
|
|
This object will be passed to test reporter.
|
|
|
|
NB. the start and end times are added by the adapter whereas the duration is calculated by Mocha - as such they probably will not match arithmetically. Ie. `endTime - startTime !== duration`. These fields have been added so that timestamped reports can be matched up with other timestamped reports from the target device (eg. memory profiling data collected outside the browser)
|
|
|
|
----
|
|
|
|
For more information on Karma see the [homepage].
|
|
|
|
|
|
[homepage]: http://karma-runner.github.com
|