2017-08-12 21 views
2

を回避しながら、私はテストスイートを持っているし、各テストファイルで、私は自分自身が、一般的にモジュール名前空間を

const chai = require('chai') 
const sinon = require('sinon') 
const expect = chai.expect 
const should = chai.should() 
const testData = require('../test/test-data') 

の束をインポート見つけ文が必要なの束をバンドルすると、これらすべてのrequire呼び出しをバンドルする方法はありrequireなし名前空間を使用していますか?

例えば、このような何か:私は私のソリューションは非常に良好であると言うことはできませんが、それはあなたが重複したコードの数を減らすことができるようになります

require('../test/test-bundle') 

console.log(chai) // ok 
console.log(sinon) // ok 
console.log(expect) // ok 
console.log(should) // ok 
console.log(testData) // ok 
+0

https://stackoverflow.com/questions/10554241/can-i-load-multipleの可能性の重複-files-with-one-require-statement –

+0

私は疑問に思っていないネームスペースを使用しないで*これを行う方法についてアドバイスを求めています - 疑いはありますが、とにかく尋ねる –

+1

名前空間がなければ可能ではないと思う。 maxでは、すべての 'require'ステートメントを1つのファイルに入れ、そのファイルから変数をエクスポートします。他のファイルからは、必要な機能を得るために1つのファイルのみをインポートする必要があります。 –

答えて

2

。 新しいモジュール(test-util.js)を定義し、そこに必要なモジュールをすべて必要とすることができます。その後、各テストで1つのモジュールしか必要とせず、名前空間を避けるために構造化代入構文を使用します。

destructuring assignmentシンタックスは、配列の値またはオブジェクトのプロパティを異なる変数にアンパックすることを可能にするJavaScript式です。

テストutil.js:

module.exports = { 
    chai: require('chai'), 
    sinon: require('sinon'), 
    expect: require('chai').expect, 
    should: require('chai').should(), 
    testData: require('../test/test-data') 
}; 

test.js

let { chai, sinon, expect, should, testData } = require('./test-util.js'); 
+0

ありがとう - 小さな質問 - なぜ 'const'の代わりに' let'を使うのですか? –

+0

本当に必要なときだけ 'const'を使うのが好きです。文字列、数値などの定数を定義するには、例えば:const MAX_POWER = 10'があります。これらのconst名は、node.js表記に従って大文字で表されます。それ以外の場合は 'let'を使用します。 – alexmac

関連する問題