I have a Mocha test file that looks like this:
var expect = require('chai').expect
var muting = require('../muting')
describe('muting', function () {
describe('init()', function () {
it('should inject an object into twitter', function () {
var twitter = 'twitter'
muting.init(twitter)
expect(muting.twitter).to.equal(twitter)
})
})
})
When I run mocha
from the CLI, it runs the test successfully.
When I run standard
(the executable for JavaScript Standard Style) I get errors on Mocha’s framework functions like so:
standard: Use JavaScript Standard Style (https://github.com/feross/standard)
c:\..\test\index.js:5:0: 'describe' is not defined.
c:\..\test\index.js:6:2: 'describe' is not defined.
c:\..\test\index.js:7:4: 'it' is not defined.
What’s the cleanest way to make Standard not complain about these functions?
Actually, you don’t need to list every single global variable in your package.json
You can specify environments instead like this:
"standard": {
"env": [ "mocha" ]
}
Source: Official ESLint configuration docs.
###
I prefer to edit my .eslintrc
and add mocha to env section:
...
"env": {
"commonjs": true,
"node": true,
"mocha": true
},
...
this way my package.json
file is kept clean, also vscode plugin for eslint understands it better
###
while eslint’s comment configuration works great for a single file, I prefer to use standard’s package.json
globals
configuration to do this for my projects. E.g.
{
"name": "my-package",
"version": "1.0.0",
"standard": {
"globals": [
"describe",
"context",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"expect"
]
}
}
###
for eslint use this line on the beginning of test_file.js
/* eslint-env mocha */
###
You can use the same solution as for web workers
/* global describe it */
var expect = require('chai').expect
var muting = require('../muting')
describe('muting', function () {
describe('init()', function () {
it('should inject an object into twitter', function () {
var twitter = 'twitter'
muting.init(twitter)
expect(muting.twitter).to.equal(twitter)
})
})
})
###
As pointed out by Nick Tomlin you just need to declare globals.
I use to put it in the command line, since I have different globals for tests as for sources or different parts of the project.
For tests we should use
standard --global describe --global it test/
elsewhere in my project I want to lint code that uses jQuery so I use
standard --global $ src/client/
Bonus tip
If you are using vim with Syntastic you maybe want to add to your .vimrc
let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"