Mic*_*arf 14 tdd mocha.js node.js
我想确保代码在测试模式下运行时,它不会(意外地)访问错误的数据库.检测代码当前是否在测试模式下运行的最佳方法是什么?
Kir*_*tin 22
正如评论中已经提到的那样,构建代码意识到测试是不好的做法.我甚至无法在SO甚至外面找到提到的话题.但是,我可以想办法检测在测试中启动的事实.对我来说,摩卡不会将自己添加到global
范围,但补充说global.it
.所以你的支票可能是
var isInTest = typeof global.it === 'function';
Run Code Online (Sandbox Code Playgroud)
我建议你确保你没有错误检测添加检查global.sinon
以及global.chai
你最有可能在node.js测试中使用.
根据我的经验,检查process.argv
是一个很好的方法。
例如,如果我console.log(process.argv)
在测试期间得到以下信息:
[
'node',
'/usr/local/bin/gulp',
'test',
'--file',
'getSSAI.test.unit.js',
'--bail',
'--watch'
]
Run Code Online (Sandbox Code Playgroud)
从中可以看到正在使用gulp。使用yargs使得解释这一点变得更加容易。
我强烈同意基里尔的观点,一般来说,代码不应该知道它正在被测试的事实(在你的情况下,也许你可以通过构造函数传递你的数据库绑定/连接?),对于诸如日志记录之类的事情,我可以明白为什么您可能想检测到这一点。