我正在关注Michael Hartl的rails tutorial Ch.8 exercise 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 }
为什么这不会出错(参数丢失)?自定义匹配器中的消息变量有什么价值?
答案 0 :(得分:1)
参数默认为nil,因此它会出现一个带有nil文本值的错误,如:
page.should have_selector('div.alert.alert-error', text: nil)