JavaScript 标准样式无法识别 Mocha
JavaScript Standard Style does not recognize Mocha
我有一个 Mocha 测试文件,如下所示:
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)
})
})
})
当我从 CLI 运行 mocha
时,它 运行 测试成功。
当我 运行 standard
(JavaScript Standard Style 的可执行文件)时,我在 Mocha 的框架函数上遇到错误,如下所示:
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.
让 Standard 不抱怨这些功能的最干净的方法是什么?
您可以使用与 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)
})
})
})
虽然 eslint 的注释配置非常适合单个文件,但我更喜欢使用标准的 package.json
globals
配置来为我的项目执行此操作。例如
{
"name": "my-package",
"version": "1.0.0",
"standard": {
"globals": [
"describe",
"context",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"expect"
]
}
}
正如 Nick Tomlin 所指出的,您只需要声明全局变量即可。
我习惯把它放在命令行中,因为我有不同的全局变量来测试源或项目的不同部分。
对于测试我们应该使用
standard --global describe --global it test/
在我项目的其他地方,我想检查使用 jQuery 的代码,所以我使用
standard --global $ src/client/
小费
如果您将 vim 与 Syntastic 一起使用,您可能想添加到您的 .vimrc
let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
实际上,您不需要在 package.json
中列出每个全局变量
您可以像这样指定环境:
"standard": {
"env": [ "mocha" ]
}
对于 eslint,在 test_file.js
的开头使用这一行
/* eslint-env mocha */
我更喜欢编辑我的 .eslintrc
并将 mocha 添加到环境部分:
...
"env": {
"commonjs": true,
"node": true,
"mocha": true
},
...
这样我的 package.json
文件就会保持干净,vscode eslint 插件也能更好地理解它
我有一个 Mocha 测试文件,如下所示:
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)
})
})
})
当我从 CLI 运行 mocha
时,它 运行 测试成功。
当我 运行 standard
(JavaScript Standard Style 的可执行文件)时,我在 Mocha 的框架函数上遇到错误,如下所示:
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.
让 Standard 不抱怨这些功能的最干净的方法是什么?
您可以使用与 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)
})
})
})
虽然 eslint 的注释配置非常适合单个文件,但我更喜欢使用标准的 package.json
globals
配置来为我的项目执行此操作。例如
{
"name": "my-package",
"version": "1.0.0",
"standard": {
"globals": [
"describe",
"context",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"expect"
]
}
}
正如 Nick Tomlin 所指出的,您只需要声明全局变量即可。
我习惯把它放在命令行中,因为我有不同的全局变量来测试源或项目的不同部分。
对于测试我们应该使用
standard --global describe --global it test/
在我项目的其他地方,我想检查使用 jQuery 的代码,所以我使用
standard --global $ src/client/
小费
如果您将 vim 与 Syntastic 一起使用,您可能想添加到您的 .vimrc
let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
实际上,您不需要在 package.json
中列出每个全局变量您可以像这样指定环境:
"standard": {
"env": [ "mocha" ]
}
对于 eslint,在 test_file.js
的开头使用这一行/* eslint-env mocha */
我更喜欢编辑我的 .eslintrc
并将 mocha 添加到环境部分:
...
"env": {
"commonjs": true,
"node": true,
"mocha": true
},
...
这样我的 package.json
文件就会保持干净,vscode eslint 插件也能更好地理解它