1

我正在关注 Michael Hartl 的Rails 教程 Ch.8 练习 2,该教程要求通过定义 RSpec 自定义匹配器将测试与实现分离。

我的定义之一是

RSpec::Matchers.define :have_error_message do |message|
  match do |page|
    page.should have_selector('div.alert.alert-error', text: message)
  end
end

所以我可以在 RSpec 中编写以下测试

it { should have_error_message('Invalid') }

但是,在没有如下参数的情况下调用 have_error_message 也可以。

it { should_not have_error_message } 

为什么这不会给出错误(缺少参数)?自定义匹配器中的消息变量取什么值?

4

1 回答 1

1

该参数默认为 nil,因此它会预期一个带有 nil 文本值的错误,例如:

page.should have_selector('div.alert.alert-error', text: nil)
于 2012-07-24T00:58:54.273 回答