2017-08-12 63 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,沒有使用命名空間?

E.g是這樣的:

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'語句放在一個文件中,並從該文件中導出變量。從您的其他文件中,您只需導入一個文件即可獲得必要的功能。 –

回答

2

我不能說我的解決方案是非常好的,但它可以讓你減少重複的代碼數量。 您可以定義一個新模塊(test-util.js)並在其中需要所有需要的模塊。之後,在每個測試中,只需要一個模塊並使用解構賦值語法來避免命名空間。

解構賦值語法是一個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

感謝 - 小問題 - 爲什麼'let'而不是'const'? –

+0

我更喜歡只有在真的有必要時才使用'const'。用於定義字符串,數字等常量,例如:'const MAX_POWER = 10'。這些常量名稱根據node.js表示法大寫。對於其他情況我使用'let'。 – alexmac