2016-11-14 4 views
1

Jasmine-Nodeを使用してJavascriptコードをテストします。JavaScriptで2つの異なる関数オブジェクトをエクスポートおよびインポートするにはどうすればよいですか?

Confusions1とConfusions2のような2つの異なる関数オブジェクトをどのようにエクスポートできるので、どちらもJasmine-Nodeテストファイルで使用できますか?

私の試みは次のようになります。confusions.jsからConfusions1とConfusions2は内のブロックを記述ネストされた2の両方で使用できるように、私はそれをしたい

// confusions.spec.js 

var Confusion = require('./confusions.js'); 

describe("chapter 1, common misconception ", function() { 
     describe("to assume `this` refers to the function itself: ", function() { 
       var confusion = new Confusion(); 

       // some test code omitted 


     }); 

     describe("to assume `this` refers to the function's scope", function() { 
       var confusion = new Confusion(); 

       // test code omitted 

     }); 
}); 

// confusions.js 
var Confusions1 = function() {}; 

Confusions1.prototype.foo = function(num) { 
     // keep track of how many times `foo` is called 
     this.count++; 
} 

module.exports = Confusions1; 

// second function object 

var Confusions2 = function() {}; 

Confusions2.prototype.foo = function() { 
     var a = 2; 
     this.bar(); 
}; 

Confusions2.prototype.bar = function() { 
     return this.a; 
} 

module.exports = Confusions2; 

そして、私のジャスミンのテストファイルconfusions.spec.js

ファイルを要求した後に何らかの形で別のオブジェクトを初期化しなければならないと仮定します。var Confusion = require('./confusions.js'); 何かのようにvar confusion1 = new Confusions1(); var confusion2 = new Confusions2();しかし、正確に(両方のオブジェクトを2つの別々のファイルに分割することなく)どのくらい正確に?

答えて

1

だから、あなたは2つの機能をエクスポートする別の言葉で、エクスポートされた値のコンテナのように振る舞うモジュールを持つようにしたい:

// foo.js 
var Confusion1 = function() {} 
var Confusion2 = function() {} 
... 
exports.Confusion1 = Confusion1 
exports.Confusion2 = Confusion2 

あなたはこのモジュールを必要な場所、あなたのようなこのようなものを必要とする可能性があります:

また
// bar.test.js 
var confusions = require('path-to-the-foo-file') 
console.log(confusions.Confusion1) 
console.log(confusions.Confusion2) 

あなたが、あなたは一般的に作品を使用しているどのようにモジュールシステムをチェックし、この答えを確認する必要がありそうですとして:迅速TESへの道がありますmodule.exports vs exports in Node.js

+0

jasmine-nodeボイラープレートのないあなたのコード?あなたのアプローチでテストを調整すると、Confusion1/Confusion2がテストで定義されていないため、TypeErrorが発生します。 – StandardNerd

+0

ノード定型文とは何ですか?テストフレームワークに関係するものは何もなく、ノードモジュールシステムに関するものです。上から2つのモジュールを作成し、 'node bar.test.js'を実行します。 – Srle

関連する問題