Unit testing 咖啡脚本+;单元测试:全局变量?

Unit testing 咖啡脚本+;单元测试:全局变量?,unit-testing,coffeescript,jasmine,Unit Testing,Coffeescript,Jasmine,我正在尝试使用Jasmine对一个用coffeescript编写的小应用程序进行单元测试。我发现很多资料都说,在从coffeescript编译的JS上可以很好地完成单元测试。如果所有内容都封装在匿名函数中以避免污染名称空间,那么如何访问JS代码的数据和逻辑?是每次使用-b标志运行编译器的唯一解决方案吗?您应该针对从CoffeeScript模块公开的公共接口进行测试。如果您的模块名为Foo,并公开了两种公共方法,bar和baz,则可以按如下方式导出它们: Foo = bar: (a, b)

我正在尝试使用Jasmine对一个用coffeescript编写的小应用程序进行单元测试。我发现很多资料都说,在从coffeescript编译的JS上可以很好地完成单元测试。如果所有内容都封装在匿名函数中以避免污染名称空间,那么如何访问JS代码的数据和逻辑?是每次使用-b标志运行编译器的唯一解决方案吗?

您应该针对从CoffeeScript模块公开的公共接口进行测试。如果您的模块名为
Foo
,并公开了两种公共方法,
bar
baz
,则可以按如下方式导出它们:

Foo =
    bar: (a, b) ->
        #implementation
    baz: (c) ->
        #implementation
(exports ? this).Foo = Foo
当然,这种模式还有其他变化。例如,见。现在您已经公开了公共接口,只需以任何适当的方式将其提供给Jasmine测试即可。例如,如果您使用的是jasmine节点,您将执行以下操作:

Foo = require('foo') #assuming your module is compiled to foo.js

然后,您的测试将调用
Foo.bar
Foo.baz

使用
-b
有意义的情况很少;普通测试不是其中之一。lawnsea非常正确,您应该导出您测试的所有内容(将其附加到节点下的
导出
,或浏览器中的
窗口
)。它和任何编程语言都一样,真的


对于Jasmine和CoffeeScript,尤其是与jQuery结合使用时,您应该看看该项目,然后。

我刚刚偶然发现了这一点,但是如果您希望以低廉的价格开始使用Jasmine和CoffeeScript,您可以查看我发布到Github的这个框架Sinatra应用程序。它使用机架过滤器动态编译CoffeeScript。示例规范和说明包括: