当我试图打开一个apple push notification library连接时,当我尝试单元测试APN时,我得到一个全局泄漏错误。
这是我的配置错误还是node-apn或mocha中的错误?
我不太清楚checkGlobals在做什么..。它只是检查是否设置了任何全局变量?
0) Feed "before all" hook:
Error: global leak detected: hasCert
at Runner.checkGlobals (/usr/lib/node_modules/mocha/lib/runner.js:96:21)
at Runner.<anonymous> (/usr/lib/node_modules/mocha/lib/runner.js:41:44)
at Runner.emit (events.js:64:17)
at /usr/lib/node_modules/mocha/lib/runner.js:159:12
at Hook.run (/usr/lib/node_modules/mocha/lib/runnable.js:114:5)
at next (/usr/lib/node_modules/mocha/lib/runner.js:157:10)
at Array.<anonymous> (/usr/lib/node_modules/mocha/lib/runner.js:165:5)
at EventEmitter._tickCallback (node.js:126:26)发布于 2012-04-06 16:19:31
是的,Mocha具有全局泄漏检测机制,如果您测试的代码引入全局变量,该机制会发出警报并失败。
如果hasCert是在库中声明的,并且您无法控制它的创建,那么您可以告诉Mocha忽略它。
在command line上,
$ mocha --globals hasCert引用文档:
此选项接受以逗号分隔的可接受全局变量名列表。例如,假设您的应用程序故意公开一个全局命名的应用程序和YUI,您可能想要添加--globals app,YUI。
在浏览器中:
mocha.setup({globals: ['hasCert']});发布于 2012-07-27 05:15:00
您还可以通过传递以下命令来禁用全局泄漏检测:
mocha --ignore-leaks在浏览器中:
mocha.setup({ignoreLeaks: true});发布于 2011-12-03 04:21:25
我也遇到了这个问题,您可能像我一样忘记了var语句,这在JS中意味着将创建一个全局变量。
你可能不得不根据你的应用程序的结构自己去寻找它,希望这不是由第三方的代码导致的。:P
你应该在你的项目中使用JSLint或JSHint,如果源代码在你代码中的任何地方,它们应该会帮助你发现源代码。
https://stackoverflow.com/questions/8360318
复制相似问题