Node.js 使用Npm.depends声明测试依赖项
我想知道如何仅在测试中声明Meteor中对Npm模块的依赖 在测试包时,我可以在Node.js 使用Npm.depends声明测试依赖项,node.js,meteor,Node.js,Meteor,我想知道如何仅在测试中声明Meteor中对Npm模块的依赖 在测试包时,我可以在package.js中轻松声明Npm依赖项,如下所示: Npm.depends({ ... 'sinon': '1.15.3' ... }); 但我在测试中只使用了sinon,我想让它更明确 我尝试了下列方法,但没有成功 Package.onTest(function(api) { // # 1 // can't do this because it is not a meteor module
package.js
中轻松声明Npm依赖项,如下所示:
Npm.depends({
...
'sinon': '1.15.3'
...
});
但我在测试中只使用了sinon
,我想让它更明确
我尝试了下列方法,但没有成功
Package.onTest(function(api) {
// # 1
// can't do this because it is not a meteor module
api.use('sinon');
// # 2
// can't because I have other production Npm dependencies
// and Meteor only allows one `Npm.depends` call per `package.js`.
// Also, not sure if nesting Npm.depends() is allowed at all.
Npm.depends({
'sinon': '1.15.3'
});
});
有什么建议吗?唯一的方法是将sinon打包成一个包和
api。使用它。您可以执行以下操作:
$ meteor create --package sinon
将软件包/sinon
的内容替换为以下内容:
$ meteor create --package sinon
package.js
Package.description({
总结:“JavaScript的独立测试间谍、存根和模拟。”
});
包.onUse(函数(api){
api.versionFrom('1.0.4');
api.export('sinon','server');
api.addFiles('sinon.js');
api.addFiles('post.js');
});
post.js
sinon=this.sinon;
sinon.js
从下载最新版本
最后,在您正在测试的包中,您可以添加api.use('sinon')您的包.onTest中的code>
作为制作您自己的软件包的替代方案,您可以使用其中一个可用的社区版本。为sinon创建meteor包装,然后在onTest中执行api.use(),怎么样?感谢您提供的详细说明。我知道我们正在导出sinon
变量,以便在包外使用它,但是post.js
中的this.sinon
的含义是什么?您经常会看到包装第三方代码的奇怪的pre和post脚本。这有点复杂,但基本上通过包公开符号的唯一方法是声明一个全局变量(不带var
)。包内的global
对象被包装以防止变量泄漏-这很好,但会导致一些类似上述的奇怪的解决方法。那么,this
是包本身吗?是的,你可以这样想-对包来说是全局的,而不是对应用程序来说是全局的。