我想确保如果代码在测试模式下运行,它不会(意外地)访问错误的数据库。如果代码目前运行在测试模式中,什么是最好的检测方法?
发布于 2015-03-21 13:14:15
正如注释中已经提到的,构建您的代码知道测试是错误的做法。我甚至在外面都找不到上面提到的话题。然而,我可以想出办法来发现在测试中启动的事实。对我来说,摩卡没有将自己添加到global作用域,而是添加了global.it。所以你的支票可能是
var isInTest = typeof global.it === 'function';我建议您确保没有错误检测来添加global.sinon和global.chai检查,这是您最可能在node.js测试中使用的。
发布于 2015-05-22 07:44:57
根据我的经验,检查process.argv 是一种很好的方法。
例如,如果我在测试期间使用console.log(process.argv),我会得到以下内容:
[
'node',
'/usr/local/bin/gulp',
'test',
'--file',
'getSSAI.test.unit.js',
'--bail',
'--watch'
]从这里你可以看到这一口是被使用的。使用纱线使解释这一切变得更加容易。
我非常同意Kirill的观点,通常情况下,代码不应该意识到它正在进行测试(在您的示例中,您可能可以通过构造函数传递db绑定/连接?),对于日志之类的内容,我可以理解为什么要检测到这一点。
发布于 2019-02-07 16:17:08
最简单的选择是只使用detect-mocha [NPM包]。
var detectMocha = require('detect-mocha');
if(detectMocha()) {
// doSomethingFancy
}如果您不想这样做,相关代码只是
function isMochaRunning(context) {
return ['afterEach','after','beforeEach','before','describe','it'].every(function(functionName){
return context[functionName] instanceof Function;
})其中context是当前的window或global。
https://stackoverflow.com/questions/29183044
复制相似问题