如何在Rails测试中结合自动测试和spork?

时间:2010-11-25 07:09:35

标签: ruby-on-rails testing rubygems autotest spork

自动测试通过仅运行更改的测试来提高测试运行的速度。

但是我想通过使用spork预加载Rails环境来进一步推动它,这样我就能获得更快的反馈。

这可能吗?

自动测试:https://github.com/grosser/autotest

Spork:http://github.com/timcharper/spork

3 个答案:

答案 0 :(得分:13)

第1条 mikbe has you covered!我会在这里尝试改写它,但这篇帖子做得非常好。

如果您碰巧使用OSX,还有使用Growl进行托盘通知的说明。

对于Rails 3和RSpec 2,

第2条 Ruby Inside also has a walkthrough

答案 1 :(得分:4)

如果您使用Ruby 1.9并希望将spork和autotest与Test :: Unit(实际上是MiniTest)一起使用,请尝试以下方法:

的Gemfile:

group :test do
  # Newer version of test::unit:
  gem 'minitest'

  # spork preloads a rails instance which is forked every time the tests are
  # run, removing test startup time.
  gem 'spork'

  # Run 'spork minitest' to start drb server (test server). Use 'testdrb' to
  # run individual tests via spork.
  gem 'spork-minitest'

  # Run 'bundle exec autotest' to rerun relevant tests whenever a file/test is
  # changed. '.autotest' makes sure the tests are run via test server (spork).
  gem 'autotest-standalone'

  # -pure gives us autotest without ZenTest gem.
  gem 'autotest-rails-pure'
end

.autotest

class Autotest
  # run tests over drb server (spork)
  def make_test_cmd files_to_test
    if files_to_test.empty?
      "" # no tests to run
    else
      "testdrb #{files_to_test.keys.join(' ')}"
    end
  end
end

(注意:说明bin/testdrb,但我将其更改为testdrb以使其适用于我。)

在终端中:

spork minitest --bootstrap

修改test/test_helper.rb并按照说明操作。

完成上述设置后,您可以启动测试服务器:

spork minitest

最后在另一个终端启动自动测试:

bundle exec autotest

并且(希望)使用MiniTest享受非常快速的自动测试。

答案 2 :(得分:0)

我还没有尝试过,但chapter 3 of the RailsTutorial中有一节告诉一些“黑客”设置spork。该教程目前说:

  

......截至本文撰写时,Spork并未正式支持Rails 3

本章继续介绍如何使用自动测试进行设置。有一点需要知道,你需要

  

- DRB

<。>在.rspec文件中。