2016-11-17 5 views
10

私は静的にFlowTypeでチェックしたいいくつかの複雑なモカコードを持っています。私はこの上でフローを実行するとフロータイプを使用してモカテストコードを静的にチェック

/* @flow */ 

describe('it', function() { 
    it('fails', function() { 
     const s: number = 'flow spots this error'; 
    }); 
}); 

は、フローが実際にアプローチを拡張し、いくつかに取り組んでいることを示してnumberからstringの割り当ての問題を見つけるん:

以下は最小限REPROです。

しかし、私はまた、取得:

test/test.js:4 
    4: describe('it', function() { 
    ^^^^^^^^ identifier `describe`. Could not resolve name 

test/test.js:5 
    5:  it('fails', function() { 
     ^^ identifier `it`. Could not resolve name 

…明らかに、Mochaテスト定義は、これらの機能がグローバルに利用できる環境で実行されますが、テストファイルを見れば、Flowがそれを検出することはできません。

私は、これらの問題は、モカ特有のものですわかりませんが、私はので、私の質問があり、私は自信を持ってより広範な用語で質問をフレームすることができます感じていない:

  1. 私が持つことができますどのようにフロータイプはモカテストをチェックdescribeまたはitを含むすべての行を抑制することなく、
  2. これはより広範な種類の状況の例です。もしそうなら、後者は何ですか?

答えて

4

通常、サードパーティライブラリには、定義ファイル、つまり特定のライブラリのすべてのタイプ情報を含むファイルが必要です。幸いflow-typed.

によって提供され、この場合には

、あなたは、モカのための定義ファイルを必要とするには、それが自動的にすべてインストールされます

flow-typed install 

を実行し

npm install -g flow-typed 

でそれをインストールします。 mochaを含む依存関係に使用可能な定義ファイル。

+1

モカのフロー型のdefは現在、ほとんど役に立たない自動生成スタブであり、 'describe'と' it'のエラーを修正しません。 – Andy

+2

@Andyインポートを変更する必要があります: import {describe、it} 'mocha'; – paulojean

+0

@paulojeanいいえ、それで、自分で試してみてください。あなたが 'mocha 'から' '{記述}をインポートし、' describe(' blah '、' blah '、' blah ')と書くと、フローエラーは発生しません。それは私が推測する大きな問題ではないが。 – Andy

1

フローdescribe,itという変数を単純に宣言できます。

/* @flow */ 
declare var describe: any; 
declare var it: any; 

describe('it', function() { 
    it('fails', function() { 
     const s: number = 'flow spots this error'; 
    }); 
}); 
関連する問題