JavaScript标准样式不识别Mocha
我有一个如下所示的测试文件:JavaScript标准样式不识别Mocha,javascript,mocha.js,Javascript,Mocha.js,我有一个如下所示的测试文件: 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'
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)
})
})
})
"standard": {
"env": [ "mocha" ]
}
当我从CLI运行mocha
时,它会成功运行测试
当我运行standard
(的可执行文件)时,我会在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.
让标准版不抱怨这些功能的最干净的方法是什么?您可以使用与标准版相同的解决方案
虽然eslint的注释配置对于单个文件非常有效,但我更喜欢使用standard的
globals
配置来为我的项目执行此操作。例如
{
"name": "my-package",
"version": "1.0.0",
"standard": {
"globals": [
"describe",
"context",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"expect"
]
}
}
正如前面所指出的,您只需要声明globals
我通常把它放在命令行中,因为我有不同的全局变量用于测试源或项目的不同部分
对于测试,我们应该使用
standard --global describe --global it test/
在我的项目中的其他地方,我想lint使用jQuery的代码,所以我使用
standard --global $ src/client/
奖金小费
如果您将vim与Syntastic一起使用,您可能希望将其添加到.vimrc中
实际上,您不需要列出package.json中的每个全局变量 您可以这样指定环境:
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)
})
})
})
"standard": {
"env": [ "mocha" ]
}
来源:.对于eslint,请在test_file.js的开头使用此行
/* eslint-env mocha */
我更喜欢编辑我的
.eslintrc
,并将摩卡添加到环境部分:
...
"env": {
"commonjs": true,
"node": true,
"mocha": true
},
...
这样,我的
package.json
文件就保持了干净,而且用于eslint的vscode插件也能更好地理解它这是一个很好的解决方案。这难道不意味着我可以在常规的非测试代码中调用it
,它将通过linting吗?换句话说。它可以只限于测试类吗?是的,这就是问题所在package.json
设置是linter的“全局”设置。您可以通过为不同的文件提供不同的CLI参数来绕过它:类似于为lint测试(未测试)提供的standard--env mocha test/**/js
,但IRL i从未需要这样调整设置。如果使用jest,您还可以:“standard”:{“env”:[“jest”]}要添加到@palafox_e的评论中,您可以通过导航到找到可用的值:我正在使用jest
,但我不知道为什么只适用于摩卡而不适用于jest!我更喜欢这个解决方案!如果必须为每个测试添加它,那么这不是一个解决方案file@Peadar创建多个.eslintrc.json
也不是很漂亮,因为您不想在测试中添加一行。另一方面,创建另一个.eslintrc.json
是有意义的,如果你需要更多的mocha配置,例如一个额外的插件。目前为止唯一有效的解决方案是,这应该是批准的答案。我也支持这一事实,即这应该是批准的答案。