2017-04-11 3 views
0

Mochaでテストする場合、foo-test.jsがgiveMeFive()などのグローバル変数をテストできるように、どのようにfoo.jsをロードするのですか?モカでグローバルをテストするには?

foo.jsは:

function giveMeFive() { 
    return 'High five!'); 
} 

FOO-test.js:

describe('#convertNumberToDollar()', function() { 
    it('should get a successful high five',() => { 
    assert.ok(giveMeFive() === 'High five!', ' successful high five.'); 
    }); 
}); 

ソリューションは、竹を経由して自動化することができる場合、それは理想的です。

+0

NodeでMochaを実行していますか?その場合、単に 'require'(またはBabelを使っているならば' import')を使うことができます –

+0

giveMeFive()がグローバルであっても? –

+0

私の答えを今すぐチェックしてください。 –

答えて

0

import * as thisNameDoesntMatter from 'foo'を使用するか、es5スタイル(この場合はクリーナー)を使用して、require('foo')とそのファイルで定義されているグローバルをグローバルスコープで利用できます。あなたは、以下のJavaScriptファイルを定義した場合例えば

は、:することができますように

//test-compiled.js 
'use strict'; 

Object.defineProperty(exports, "__esModule", { 
    value: true 
}); 
global.aGlobalVariable = 'someValue'; 

var aLocalVariable = 'anotherValue'; 

exports.default = aLocalVariable; 

//test.js 

aGlobalVariable = 'someValue'; 

let aLocalVariable = 'anotherValue'; 

export default aLocalVariable; 

これはバベルは(es2015プリセットと"node"環境を使用して)生成されたコードですを参照してください、aGlobalVariable宣言は、モジュール内に保持されます。コンパイルされたファイル全体がインポート時に評価されるため、環境を選択した場合は、windowに定義されています。aGlobalVariableは、このモジュールをインポートするたびにグローバルスコープで使用できます。インポートするグローバルを明示的に要求する必要はありません。

+0

こんにちは!ご回答いただきありがとうございます。私の質問は、Mochaでグローバルをテストする方法ですか?グローバル変数を含むfoo.jsをロードするにはどうすればよいですか?私は多くのグローバルで多くのファイルでいっぱいのレガシーコードで作業しています。 –

+0

モジュールをエクスポートするファイルを読み込むのと同じ方法でファイルを読み込むことができます。ファイルにグローバルが含まれている場合、それらのグローバルは 'global'(Node)または' window'(browser')オブジェクトに通常どおり設定されます。私はそれに対処するために私の答えを編集しました。 –

+0

ありがとうございます。私は解決策として輸入*について知らなかった。私の必要に応じて、これは何らかの理由で動作しませんでしたが、gulp-mocha-phantomjsは私のMocha htmlテストランナーをNodeで動かすのに役立ちました。乾杯! –

関連する問題