JavaScript标准样式无法识别Mocha

时间:2015-05-03 19:17:55

标签: javascript mocha

我有一个Mocha测试文件,如下所示:

MyApp.age = 5

当我从CLI运行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) }) }) }) 时,它会成功运行测试。

当我运行mochaJavaScript Standard Style的可执行文件)时,我在Mocha的框架函数中遇到错误,如下所示:

standard

什么是最简洁的方法让标准不抱怨这些功能?

6 个答案:

答案 0 :(得分:97)

实际上,您不需要在package.json中列出每个全局变量

您可以像这样指定环境:

"standard": {
  "env": [ "mocha" ]
}

来源:Official ESLint configuration docs

答案 1 :(得分:62)

我更喜欢编辑我的.eslintrc并将mocha添加到env部分:

...
"env": {
  "commonjs": true,
  "node": true,
  "mocha": true
},
...

这样我的package.json文件保持干净,eslint的vscode插件也能更好地理解

答案 2 :(得分:55)

虽然eslint的评论配置适用于单个文件,但我更喜欢使用标准的package.json globals配置为我的项目执行此操作。 E.g。

{
  "name": "my-package",
  "version": "1.0.0",
  "standard": {
    "globals": [
      "describe",
      "context",
      "before",
      "beforeEach",
      "after",
      "afterEach",
      "it",
      "expect"
    ]
  }
}

答案 3 :(得分:38)

您可以使用与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)
    })
  })
})

答案 4 :(得分:38)

for eslint在 test_file.js

的开头使用此行
/* eslint-env mocha */

答案 5 :(得分:3)

正如Nick Tomlin所指出的,你只需要声明全局变量。

我用它将它放在命令行中,因为我有不同的全局变量用于测试源或项目的不同部分。

对于测试,我们应该使用

standard --global describe --global it test/

我的项目中的其他地方我想要使用jQuery的lint代码,所以我使用

standard --global $ src/client/

奖金提示

如果您使用带有Syntastic的vim,您可能想要添加到 .vimrc

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"