2012-07-23 42 views
1

我跟随Michael Hartl的rails tutorial Ch.8 exercise 2,要求通过定义RSpec自定义匹配器来将测试与实现分离。带参数的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 } 

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

回答

1

的参数默认为无,所以它会期待一个错误与像无文本值:

page.should have_selector('div.alert.alert-error', text: nil) 
+0

确定了它的感谢。 – EricC 2012-07-24 12:07:37

相关问题