在我的節點的應用程序,有一個配置文件是這樣的:不修改加載的節點模塊
module.exports = {
BUILD_DIR: '/some.path',
OTHER_CONFIG: 42,
// ...
};
我也有一些測試,做這樣的事情
var appConfig = require('./path/to/appConfig');
appConfig.BUILD_DIR = 'tmp/some/path';
// and stuff done with appConfig
要我很大的驚喜顯然這樣做修改模塊的狀態。我的下一個測試,要求它必須BUILD_DIR
設置爲「TMP /一些/路徑」。我沒有意識到模塊有這種狀態需要。我如何在測試中擺脫這種影響?另外,如何防止人們修改此模塊的狀態?如果有人包含它,他們應該總是得到它所定義的內容,而不可能是其他代碼寫給它的東西。
這並不實際工作,我還是結了我的修改顯示在我的其他測試了。如果我「返回擴展({},{..config ..})」的功能,那麼它的工作。 –
我測試過它,它爲我的作品([要點](https://gist.github.com/robertklep/c58a3da939d6c18d07aa))。它應該,因爲該函數返回的對象是每一個函數被調用時新建的,即使函數本身緩存。 – robertklep
啊,的確如此。我把配置放入一個var,然後通過函數返回。一步到位做到了這一點。 –