JavaScript標準スタイルはモカを認識しません


94

私が持っているモカ、このようになりますことをテストファイルを:

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)
    })
  })
})

mochaCLIから実行すると、テストは正常に実行されます。

私は実行するとstandard(のための実行可能なJavaScriptの標準スタイル)私はそうのようなモカのフレームワーク機能にエラーが発生します:

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がこれらの機能について文句を言わないようにする最もクリーンな方法は何ですか?

回答:


147

実際には、package.json内のすべてのグローバル変数をリストする必要はありません。

代わりに、次のように環境を指定できます。

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

出典:公式のESLint構成ドキュメント


1
良い解決策。それはit、通常の非テストコードを呼び出すことができ、リンティングに合格するという意味ではありませんか?言い換えると。テストクラスのみに制限できますか?
アシュリー2016

3
ええ、それが問題です...package.json設定はリンターの「グローバル」です。ファイルごとに異なるCLI引数を指定することでバイパスできますstandard --env mocha test/**/js。lint-tests(テストされていません)のようなものですが、IRLiではこのような設定を微調整する必要はありませんでした。
Krzysztof Kaczor 2016

4
冗談使用している場合、あなたも行うことができます"標準":{ "ENV":[ "冗談"]}
palafox_e

@palafox_eによるコメントに追加するには、次の場所に
Wil

私は使ってjestいますが、なぜモカだけで効き、冗談では効かないのかわかりません!
Developerium

156

私は自分を編集して.eslintrcenvセクションにmochaを追加することを好みます:

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

このようにして私のpackage.jsonファイルはきれいに保たれ、eslint用のvscodeプラグインもそれをよりよく理解します


6
はい、これは承認された回答である必要があります。
レイモンドワチャガ

4
私はまた、これが承認された答えであるべきであるという事実を2番目にしています。
EzrqnKemboi20年

62

eslintのコメント構成は単一のファイルに対してはうまく機能しますが、私はプロジェクトに対してこれを行うために標準の構成を使用することを好みます。例えばpackage.json globals

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


39

Webワーカーと同じソリューションを使用できます

/* 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)
    })
  })
})

2

Nick Tomlinが指摘したように、グローバルを宣言する必要があります。

ソースやプロジェクトのさまざまな部分に関して、テスト用のさまざまなグローバルがあるため、コマンドラインに配置するために使用します。

テストには使用する必要があります

standard --global describe --global it test/

プロジェクトの他の場所で、jQueryを使用するコードをリントしたいので、

standard --global $ src/client/

ボーナスチップ

Syntasticでvimを使用している場合は、.vimrcに追加することをお勧めします

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.