2014-01-22 60 views
0

在我的摩卡測試中,我總是需要相同的庫。例如:如何在Mocha測試中重用變量?

var mongoose = require('mongoose'), 
    User = mongoose.model('User'), 
    _ = require('underscore'); 

我想在每一個測試文件中像這樣使用它們:

describe('xxx', function() { 
    it('xxx', function (done) { 
    var user = new User(); 
    done(); 
    }); 
}); 

,而無需使用任何前綴,像var user = new somefile.User(); 如何做到這一點還是有什麼更好的辦法呢?謝謝。

回答

1

基本上,這是不可能的。

摩卡有-r(或長版--require)參數,它可以幫助您需要的模塊,但作爲documentation狀態:

--require選項是庫如should.js有用的,所以您可以簡單地使用--require should而不是在每個測試文件中手動調用require('should')。請注意,這樣做的效果很好,因爲它會增加Object.prototype,但是如果您希望訪問某個模塊的導出,則必須要求它們,例如var should = require('should')

我能想象什麼作爲一種解決方法是引入一個輔助文件,基本上什麼也不做,但出口所有你需要使用一個單獨的模塊(這基本上涉及到下來給你一個prefix建議是什麼)所需的模塊:

module.exports = { 
    mongoose: require('mongoose'), 
    User: mongoose.model('User'), 
    _: require('underscore') 
}; 

這使您可以只導入實際的測試文件一個模塊(輔助文件),並訪問所有其它模塊作爲子對象,如:

var helper = require('./helper'); 

describe('xxx', function() { 
    it('xxx', function (done) { 
    var user = new helper.User(); 
    done(); 
    }); 
}); 

可能有一個比helper更好的名字可以使用,但基本上這可能是一種使其工作的方式。

+0

是的,我明白了。我想要的與Java中的'private static'字段非常相似。但這不是它在js中的工作方式。 –

相關問題