Javascript 如何封装要在Meteor中进行单元测试的模块?

Javascript 如何封装要在Meteor中进行单元测试的模块?,javascript,unit-testing,meteor,Javascript,Unit Testing,Meteor,我希望对我的Meteor应用程序进行单元测试。我有几个客户端文件,其中的函数处理一些逻辑,并由我的事件处理程序调用。我的直觉是将这些函数提取到一个模块中,这个模块可能是我的事件处理代码所需要和调用的,并进行独立的单元测试,但我不确定如何在Meteor中做到这一点 在将我的逻辑代码拉入一个单独的文件/模块后,我获得的唯一成功就是将模块作为全局变量公开。这在变量的as包作用域中进行了描述 要让它正常工作,我需要关闭“使用严格的”,通常感觉不太对劲-我不需要包中的所有内容来查看此文件,只需要使用它的一

我希望对我的Meteor应用程序进行单元测试。我有几个客户端文件,其中的函数处理一些逻辑,并由我的事件处理程序调用。我的直觉是将这些函数提取到一个模块中,这个模块可能是我的事件处理代码所需要和调用的,并进行独立的单元测试,但我不确定如何在Meteor中做到这一点

在将我的逻辑代码拉入一个单独的文件/模块后,我获得的唯一成功就是将模块作为全局变量公开。这在变量的as包作用域中进行了描述

要让它正常工作,我需要关闭
“使用严格的”
,通常感觉不太对劲-我不需要包中的所有内容来查看此文件,只需要使用它的一个位置和一个单元测试

我理解包是封装代码的一种方式,但对于这个用例来说,它似乎言过其实了

我在Meteor中进行了一些探索,以实现更细粒度的依赖关系管理,并发现了它,作者明确指出它不再被维护


在Meteor中封装代码以供使用和单元测试的正确方法是什么?

如果在Meteor文件中

MyModule = {}

function cantSeeMe() {
}


MyModule.doesStuff =function() {

}
在测试中,您可以访问它(以及meteor中的其他文件)

这是使用
mike:mocha


基本上,全球化并不是一件坏事。在java/C#等更传统的语言中,类是全局的,它们提供实例化对象的东西。在javascript中,您需要一些全局对象来提供对函数或“类”的访问。通常情况下,您不想在全局命名空间(或窗口)中引入函数或变量,除非它们有很好的理由。

我想我可以像往常一样在窗口对象上公开全局变量。。我想这是一个稍微好一点的选择?你在单元测试中使用了什么?另外,很高兴在这里看到另一个当地流星日的人!这是有道理的。在故意长时间不使用globals之后,感觉有点奇怪。我用摩卡咖啡来测试。很高兴这里还有其他陨石!谢谢你的帮助:)
   describe("Modules", function(){
      it("should be exposed", function(){        
        chai.assert.equal(typeof MyModule.doesStuff, 'function');
      });
      it("should not be exposed", function(){      
        chai.assert.equal(typeof cantSeeMe, 'undefined');
      });
    });