2012-04-10 4 views
9

この質問はおそらく以前のnode.jsの経験がなかったことに基づいていますが、jasmine-nodeがジャスミン仕様をコマンドラインから実行できるようにしたいと考えていました。jasmine-nodeがヘルパースクリプトを取得しないのはなぜですか?

TestHelper.js:

var helper_func = function() { 
    console.log("IN HELPER FUNC"); 
}; 

my_test.spec.js:

describe ('Example Test', function() { 
    it ('should use the helper function', function() { 
    helper_func(); 
    expect(true).toBe(true); 
    }); 
}); 

者は、ディレクトリ内の2つのだけのファイルです。そして、私は:

jasmine-node . 

私はこれに対する答えは簡単であると確信しているが、私は任意の超シンプルなイントロを見つけられませんでしたか、githubの上の明白なもの

ReferenceError: helper_func is not defined 

を取得。どんな助言や助けも大歓迎です!

ありがとうございます!

答えて

16

ノードでは、すべてがjsファイルの名前空間になります。

var helper_func = function() { 
    console.log("IN HELPER FUNC"); 
}; 
// exports is the "magic" variable that other files can read 
exports.helper_func = helper_func; 

をしてからmy_test.spec.jsを変更するには、このように見える::他のファイルによって機能が呼び出し可能にするために、このように見えるようにTestHelper.jsを変更最後に、

// include the helpers and get a reference to it's exports variable 
var helpers = require('./TestHelpers'); 

describe ('Example Test', function() { 
    it ('should use the helper function', function() { 
    helpers.helper_func(); // note the change here too 
    expect(true).toBe(true); 
    }); 
}); 

をして、 jasmine-node .はディレクトリ内のすべてのファイルを順番に実行しますが、ヘルパーを実行する必要はありません。代わりに、それらを別のディレクトリに移動することができます(require()./を正しいパスに変更するか、jasmine-node *.spec.jsを実行するだけです)。

+0

どうもありがとう、それへの参照を作ることができるようになります!だから...貪欲になるために、これはどういうわけか、ジャスミン・ノードで実行され、SpecRunner.htmlを使って実行できるのでしょうか? html版を使用しているときは、「エクスポートは定義されていません」と「必要は定義されていません」と表示されます。 – Hoopes

+0

私はそれを使用していませんが、私はhttp://requirejs.org/が役立つと思います。 –

+1

また、簡単な解法のために(require){... [load files] ...} 'と' if(!exports){var exports = window.helpers = {}} 'を実行するだけで何かできます。 –

2

あなたは、必ずしもあなたのようにジャスミンの設定を持っている場合は、ファイル仕様(テスト)で、あなたのヘルパースクリプトを含める必要はありません。

{ 
    "spec_dir": "spec", 
    "spec_files": [ 
    "**/*[sS]pec.js" 
    ], 
    "helpers": [ 
    "helpers/**/*.js" 
    ], 
    "stopSpecOnExpectationFailure": false, 
    "random": false 
} 

ヘルパー/フォルダ内のすべてのスペックファイルの前に実行されます。ヘルパーファイルには、あなたの機能を組み込むためのこのようなものがあります。

beforeAll(function(){ 
    this.helper_func = function() { 
    console.log("IN HELPER FUNC"); 
    }; 
}); 

あなたは、あなたのスペックファイルに

関連する問題