2

在普通视图规范文件中,我可以使用 Capybara 测试视图。

require 'spec_helper'

describe 'site/login' do
  subject { page }
  before { visit login_path }
  it { should have_selector('#login form') }
end 

使用 Rspec 我可以测试部分。

require 'spec_helper'

describe 'site/sidebar' do
  it "displays the login form" do
    render :partial => "site/sidebar"
    expect(rendered).to match /form/
  end
end

同样使用 Capybara 我可以测试视图

require 'spec_helper'

describe 'site/sidebar' do
  let!(:rendered) { render :partial => "site/sidebar" }
  let(:page) { Capybara::Node::Simple.new(rendered) }
  it { page.should have_selector('form') }
end

最后一个似乎可以工作,但感觉有点hacky。Capybara 中是否存在诸如此类的方法visit_partial?我以为我可以找到类似的东西,Capybara::Driver::Base但我找不到。

4

1 回答 1

2

你的hacky方法对我来说很好。如果您有很多部分,您可以使用共享上下文:

shared_context "Rendered partial" do
  let!(:rendered) { render :partial => partial }
  let(:page) { Capybara::Node::Simple.new(rendered) }
  subject { page }
end

describe "My partial" do
  let(:partial) { "site/sidebar" }
  include_context "Rendered partial"
  it { should have_selector('form') }
end
于 2013-04-18T15:09:36.743 回答