我正在尝试使用 Capybara RSpec 匹配器测试演示者方法。
假设我有一个呈现按钮的方法。如果我不使用 capybara rspec 匹配器,这将是我要编写的测试:
it "should generate a button" do
template.should_receive(:button_to).with("Vote").
and_return("THE_HTML")
subject.render_controls.should be == "THE_HTML"
end
使用 capybara rspec 匹配器,我想这样做:
it "should render a vote button" do
subject.render_controls.should have_button('Vote')
end
这种方法是在这篇文章http://devblog.avdi.org/2011/09/06/making-a-mockery-of-tdd/中提出的。在文章中,作者是这样解释的:“我决定稍微改变一下我的规范设置,以便传入一个包含实际 Rails 标记助手的模板对象。然后我包括了 Capybara 规范匹配器,用于对 HTML 进行断言。”
但是,我不明白这一点。当 render_controls 只返回一个 content_tag 时,如何使用 capybara rspec 匹配器?