【问题标题】:How can I do continuous build/unit testing in Coffeescript?如何在 Coffeescript 中进行持续构建/单元测试?
【发布时间】:2013-03-21 01:38:27
【问题描述】:

我正在使用 Coffeescript 和 node.js 编写一组(越来越大的)单元测试。我使用咖啡“watch”选项(-w)构建文件

coffee -w -b -c -o web/ src/

我的问题是运行单元测试需要 20 秒(我假设编译为 .js)。

如果可能,我希望自动对(编译的 .js)文件更改运行单元测试,这样可以消除对结果的长时间等待。

我目前的蛋糕文件:

fs            = require 'fs'
{print}       = require 'sys'
{spawn, exec} = require 'child_process'

build = (watch, callback) ->
  if typeof watch is 'function'
    callback = watch
    watch = false
  options = ['-c', '-b', '-o', 'web', 'src']
  options.unshift '-w' if watch

  coffee = spawn 'coffee', options
  coffee.stdout.on 'data', (data) -> print data.toString()
  coffee.stderr.on 'data', (data) -> print data.toString()
  coffee.on 'exit', (status) -> callback?() if status is 0

task 'test', 'Run the test suite', ->
  build ->
    require.paths.unshift __dirname + "/lib"
    {reporters} = require 'nodeunit'
    process.chdir __dirname
    reporters.default.run ['test']

【问题讨论】:

  • 哇——20 秒?我从来没有一个需要这么长时间编译的 CoffeeScript 项目。甚至 2 秒,就此而言。您能否尝试编译您的每个 .coffee 文件并查看哪些(如果有)需要超过 1 秒的时间来编译?然后将报告发布到issue tracker
  • 这可能不是编译——也许是 node.js 开销?我正在加载 8 个左右的要求。测试本身似乎在大约 300 毫秒内执行。
  • 你的意思是你在测试中加载了 8 个左右的requires?您能否尝试对它们中的每一个进行计时,看看哪个花费的时间超过几毫秒?

标签: coffeescript


【解决方案1】:

查看我的连接资产项目的 Cakefile:https://github.com/adunkman/connect-assets/blob/master/Cakefile

它比 sstephenson 的(我假设您的示例来源于此)稍微复杂一些,但它展示了如何查看文件目录的更改并通过重新运行测试来响应这些更改。

【讨论】:

  • 在解决 node.js 问题(从 0.4.12->0.6.4 移动)后,我在运行您的 Cakefile 时遇到了一些错误:execvp(): No such file or directory (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace: at WatchitEmitter.<anonymous> (events.js:133:17) at /Users/chambery/node_modules/watchit/lib/watchit.js:35:13 at Object.oncomplete (/Users/chambery/node_modules/watchit/lib/watchit.js:141:21) FATAL ERROR: v8::HandleScope::Close() Local scope has already been closed 这是版本问题吗?跨度>
  • 嗯。如果您可以创建一个测试用例来复制它,请将其作为错误报告发布到watchit issue tracker
  • 您的 Cakefile 可以解决问题。我仍然无法让它完全运行测试,但致命错误是由于节点升级引起的链接器错误(?):groups.google.com/group/nodejs/browse_thread/thread/…
猜你喜欢
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多