development:testing:mocha:start

Mocha Testing

  • install the mocha & eslint-plugin-mocha plugins via npm
$ npm install --save-dev mocha
$ npm install --save-dev eslint-plugin-mocha
  • create test folder and put test case there
  • to run test, just issue command mocha
$ mocha

Edit the .eslintrc.json file to include the eslint-plugin-mocha plugins

{
  ...
  "plugins": [
    "mocha"
  ],
  "rules": {
    ...
    "mocha/no-exclusive-tests": "error",
    "prefer-arrow-callback": 0,
    "mocha/prefer-arrow-callback": 2
  }
}

Mocha has a feature that allows you to run tests exclusively by appending .only to a test-suite or a test-case. This feature is really helpful to debug a failing test, so you don’t have to execute all of your tests. After you have fixed your test and before committing the changes you have to remove .only to ensure all tests are executed on your build system.

This rule looks for every describe.only, it.only, suite.only, test.only, context.only and specify.onlyoccurrences within the source code.

e.g.

describe('.saveOne', function () {
  it.only('will run the test', async function () {
    ...
  })
  it.only('will not run this test', async function () {
    ...
  })
})

In ES6, we use arrow function a lot. But in Mocha, both describe and it callback should NOT use arrow function as the this will no longer refer to suite/test.

e.g. INCORRECT

describe('User', () => {
  this.timeout(5000)   // this is not refer to suite
  ...
})

CORRECT

describe('User', function () {
  this.timeout(5000)   // this is ok
  ...
})
  • development/testing/mocha/start.txt
  • Last modified: 2019/01/13 12:34
  • by don.lee