首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测是否在node.js中运行mocha测试?

如何检测是否在node.js中运行mocha测试?
EN

Stack Overflow用户
提问于 2015-03-21 13:03:27
回答 5查看 11.8K关注 0票数 28

我想确保如果代码在测试模式下运行,它不会(意外地)访问错误的数据库。如果代码目前运行在测试模式中,什么是最好的检测方法?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-21 13:14:15

正如注释中已经提到的,构建您的代码知道测试是错误的做法。我甚至在外面都找不到上面提到的话题。然而,我可以想出办法来发现在测试中启动的事实。对我来说,摩卡没有将自己添加到global作用域,而是添加了global.it。所以你的支票可能是

代码语言:javascript
复制
var isInTest = typeof global.it === 'function';

我建议您确保没有错误检测来添加global.sinonglobal.chai检查,这是您最可能在node.js测试中使用的。

票数 34
EN

Stack Overflow用户

发布于 2015-05-22 07:44:57

根据我的经验,检查process.argv 是一种很好的方法。

例如,如果我在测试期间使用console.log(process.argv),我会得到以下内容:

代码语言:javascript
复制
[
  'node',
  '/usr/local/bin/gulp',
  'test',
  '--file',
  'getSSAI.test.unit.js',
  '--bail',
  '--watch'
]

从这里你可以看到这一口是被使用的。使用纱线使解释这一切变得更加容易。

我非常同意Kirill的观点,通常情况下,代码不应该意识到它正在进行测试(在您的示例中,您可能可以通过构造函数传递db绑定/连接?),对于日志之类的内容,我可以理解为什么要检测到这一点。

票数 5
EN

Stack Overflow用户

发布于 2019-02-07 16:17:08

最简单的选择是只使用detect-mocha [NPM包]。

代码语言:javascript
复制
var detectMocha = require('detect-mocha');
if(detectMocha()) {
  // doSomethingFancy
}

如果您不想这样做,相关代码只是

代码语言:javascript
复制
function isMochaRunning(context) {
  return ['afterEach','after','beforeEach','before','describe','it'].every(function(functionName){
    return context[functionName] instanceof Function;
})

其中context是当前的windowglobal

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29183044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档