我有下面的代码在我的服务器上的文件:如何更改服务需要在嘲笑的NodeJS
// Internal modules
const authenticationService = require('../services/authenticationService');
// Setup
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
// Init routing
require('./controllers/authenticationController')(app, authenticationService);
app.listen(8081, (err) => {
if (err) throw new Error('Could not start the server');
});
现在,这是罚款,并将努力。但是如果我运行单元测试并想用冒号版本替换authenticationService呢?对我的API执行测试时,我不想打我的真实数据库。我是否构造了这个错误,或者我应该如何处理这个问题?我知道我可以使用不同的模拟模块伪造authenticationService,但老实说,我不太喜欢使用sinon等。这次我宁愿写自己的模拟服务。任何想法/帮助?
第一件事应该是导出应用程序变量,以便它可以被测试。在这种情况下,我认为[proxyquire](https://www.npmjs.com/package/proxyquire)可以帮助你。您可以在链接中找到文档。基本上它允许你从你的测试中需要应用程序,并为你的依赖项传递模拟变量 – Richnologies
Proxyquire似乎可以完成这项工作。感谢您的输入。 – tjugg