Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Npm.depends声明测试依赖项_Node.js_Meteor - Fatal编程技术网

Node.js 使用Npm.depends声明测试依赖项

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

我想知道如何仅在测试中声明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
  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
是包本身吗?是的,你可以这样想-对包来说是全局的,而不是对应用程序来说是全局的。