5

我显然做错了什么。我正在尝试在单个文件中编写和测试纯红宝石。我想让守卫观察文件和测试文件,并在任何文件更改时运行 minitest。

所以,两个文件:game.rb 和 game_test.rb

游戏.rb

class Game
end

游戏测试.rb

require 'rubygems'
require 'minitest/autorun'
require './game'

class GameTest < MiniTest::Unit::TestCase
  def test_truth
    assert true
  end
end

我也有一个看起来像这样的 Guardfile:

notification :terminal_notifier

guard 'minitest', test_folders: '.' do
  watch('game.rb')
  watch('game_test.rb')
end

现在,我可能忘记了一些东西,但我终生无法弄清楚它是什么。

如果我开始守卫并按 Enter 键,则会发生“全部运行”并且测试会运行......至少在大多数情况下。但是,我必须按 Enter 才能发生。

此外,如果我对文件进行更改,则不会发生任何事情。我尝试将 gem 'rb-fsevent' 放在 Gemfile 中并使用“bundle exec guard”运行,但这似乎也无济于事。

任何帮助将非常感激。我要疯了。

谢谢,杰里米

4

1 回答 1

5

您的第一个“watch”定义将简单地传递“game.rb”,它不是测试文件,因此不会运行。第二个“watch”是正确的,所以当你保存“game_test.rb”时,测试应该运行。

这应该是一个更正确的 Guardfile:

notification :terminal_notifier

guard 'minitest', test_folders: '.' do
  watch('game.rb') { 'game_test.rb' }
  watch('game_test.rb')
end
于 2012-10-19T19:50:10.233 回答