我真的很喜欢 RSpec 能够分离 Controller 和 View 测试的方式,但在让 capybara 匹配器在 View 测试中工作时遇到一些问题。我基本上想要实现的是这样的:
describe "some page" do
it "should render with lots of stuff" do
assign ..
render
rendered.should have_button ('Any button') #or any capybara matcher, really
end
end
我在网上看到了一些帖子,展示了如何配置 capybara 和rails3以顺利地与cucumber或rspec Controller 测试一起工作,但这并不是我真正想要的 - 也就是说,在尽可能低的级别测试 View 。
此外,如果有另一种方法可以做到这一点(不需要大量的自定义代码,因为我知道我可以编写一些匹配器,使用 nokogiri 或任何合适的工具从渲染中提取给定的选择器),那也很棒 - 使用 capybara 是不是要求。
最佳答案
现在可以选择在测试 Controller (以及 View )时使用 Capybara 匹配器(没有 Webrat 包袱)。我这样使用它:
describe GlobalizeTranslationsController do
render_views
let(:page) { Capybara::Node::Simple.new(@response.body) }
describe "PUT :update" do
before do
put :update
end
it "displays a flash notice" do
page.should have_selector('p.notice')
end
end
end
完整代码:
引用文献:
关于ruby-on-rails-3 - 使用 capybara 和rails3进行Rspec View 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706370/