Rails单元测试

rya*_*ogo 1 ruby unit-testing ruby-on-rails ruby-on-rails-3

在我的一个Rails测试用例中:

test "something" do
  assert_raise RuntimeError do
    @foo.bar
  end
end
Run Code Online (Sandbox Code Playgroud)

我设置的@foo对象,从而@foo.bar不能提高RuntimeError(即,测试用例会失败)

但是下面的代码通过了测试:

test "something" do
  blah(@foo)
end

private
  def blah(foo)
    assert RuntimeError do
      foo.bar 
    end
  end
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

Pab*_* B. 6

- assert RuntimeError do

+ assert_raise RuntimeError do