2013-11-06 3 views
0

Я тестирую приложение NodeJS с помощью supertest. В конце моего app.js я показываю свое приложение, поэтому я могу использовать его в test.js.NodeJS Tests - exposing app

/////////////////// 
// https options 
var options = { 
    key: fs.readFileSync("./private/keys/Server.key"), 
    cert: fs.readFileSync("./private/certs/Server.crt"), 
    ca: fs.readFileSync("./private/ca/CA.crt"), 
    requestCert: true, 
    rejectUnauthorized: false 
}; 

/////////////////// 
// start https server 
var server = https.createServer(options, app).listen(app.get("port"), function(){ 
    console.log('Server listening on port ' + app.get('port')); 
}); 

exports = module.exports = server; 


Когда я требую моего сервера в моем test.js пути опций приведет к ошибке, так как мой test.js находится в ./test/test.js директории, в то время как приложение .js находится в ./app.js.

Я изо всех сил стараюсь найти решение этой проблемы.

ответ

0

Если вы сделаете свой выбор в модуль, вы можете использовать его непосредственно или окурок его в тесте, используя нечто вроде rewire или sandboxed-module

В качестве альтернативы вы можете изменить ваш экспорт, чтобы принять параметры в качестве параметра, так что вам это требуется, например require ('server') (config)

+0

Как получить доступ к параметру конфигурации в моем коде? – user1772306

+0

Введите код, который вы хотите удалить: Функция startServer (config) { return https.createServer (options, app) .listen (app.get ("port"), function() { console.log ('Server прослушивание порта «+ app.get (« порт »)); }); } module.exports = startServer; – Dan