37

我在 Rails 应用程序中使用 CoffeeScript,我想对它进行单元测试。谷歌没有发现任何东西,除了编写我自己的测试框架或测试 CoffeeScript 输出的 JavaScript 之外,还有什么方法可以做到吗?

4

4 回答 4

26

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

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

更新:Jasmine测试可以在 node.js 上运行,在这种情况下,测试和被测代码都可以是 CoffeeScript,不需要任何编译步骤。

于 2010-06-28T05:12:47.697 回答
11

您可以“按原样”使用 QUnit,但仍然只编写咖啡脚本 - 而没有胶水代码。
作为示例,我在 github 上有一个非常小的纯咖啡脚本项目 - ruby​​ann

HTML 测试页面ruby​​ann_tests.html引用了测试jquery.rubyann.coffee的ruby​​ann_tests.coffee文件。我没有编写任何 javascript 或任何其他代码来完成这项工作。

如果您使用命令行参数--allow-file-access-from-files ,测试仅在本地计算机上的 Chrome 上运行。但它可以在 Firefox 甚至 IE 上运行而没有问题。

附录- 测试也设置为通过 Node/gulp/qunitjs 在命令行上运行 - 下载 repo 并输入npm run test

于 2011-01-10T11:13:56.180 回答
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文章中解释了对变量进行柯里化的需要......

于 2012-04-04T08:20:30.447 回答
0

对于 Coffee-Script 单元测试,您可以尝试Beast-Test,它是从头开始为咖啡脚本编写的。仅供参考,我是自己的,但我认为您仍然会喜欢它。它类似于 JUnit

于 2014-04-18T17:42:29.443 回答