CoffeeScript单元测试?

37

我在Rails应用中使用CoffeeScript,并且想对它进行单元测试。在Google上没有找到相关信息,是否有除了编写自己的测试框架或测试由CoffeeScript输出的JavaScript代码之外的方法?

4个回答

26

您可以使用任何Javascript测试框架与CoffeeScript一起使用。这将测试由CoffeeScript输出的Javascript,这是必需的,因为CoffeeScript本身无法执行。

编写自己的CoffeeScript测试框架很有趣(我曾经这样做过),但完全没有必要。

更新: Jasmine测试可以在node.js上运行(请参见),在这种情况下测试和待测试的代码都可以是CoffeeScript,无需进行任何编译步骤。


1
谢谢你的回答。我决定现在使用QUnit。我需要写一点粘合代码来让我的测试页面运行,但没关系。 - Alex Korban
1
还有一个专门针对CoffeeScript的Coffee-Spec https://github.com/gfxmonk/coffee-spec。我认为大多数人(包括我自己)都像你一样使用JavaScript单元测试框架。 (我使用Jasmine。) - RJHunter
1
我发现了这个页面,上面说你可以用Coffeescript编写Jasmine测试框架并且它能够正常工作。你知道是否只有Coffeescript(和Nodeunit)能够正常工作,还是说任何测试框架都可以用Coffeescript编写? - Mathieu Brouwers

11
您可以直接使用 QUnit 进行测试,但仍然只需编写 CoffeeScript 代码 - 不需要编写任何粘合代码。
我在 Github 上有一个非常小的、纯 CoffeeScript 项目作为示例 - rubyann
HTML 测试页面 rubyann_tests.html 引用了测试 rubyann_tests.coffee 文件,该文件测试 jquery.rubyann.coffee。我没有编写任何 JavaScript 或其他代码使其工作。
如果您使用命令行参数--allow-file-access-from-files,则这些测试仅在本地机器上的 Chrome 中运行。但是,在 Firefox 和甚至 IE 上也可以无问题运行。 附言 - 这些测试还设置为通过 Node/gulp/qunitjs 在命令行上运行 - 下载存储库并输入 npm run test 即可。

3
我正在使用QUnit测试我的Rails应用中的CoffeeScript,并在这里写下了我是如何做到的:http://effectif.com/coffeescript/qunit-boilerplate 在我的文章中最有趣的事情是使用回调函数Coffee.load来保证包含测试的文件在包含被测试代码的文件之后加载:
<script type="text/coffeescript">
  for file in ['models', 'controllers']                                             
    lib = "../../app/assets/javascripts/#{file}.js.coffee"                          
    load_test = ->                                                                  
      test = "#{file}_test.coffee"                                                  
      -> CoffeeScript.load(test)                                                    
    CoffeeScript.load lib, load_test()  
</script>

在这篇文章中解释了对test变量进行柯里化的必要性...

0

如果你想进行 Coffee-Script 单元测试,可以尝试 Beast-Test,它是专门为 Coffee-Script 设计的。顺便说一下,我是这个项目的所有者,但我认为你会喜欢它的。它类似于 JUnit。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接