2

通常のビュー スペック ファイルでは、ビューをカピバラでテストできます。

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

また、カピバラを使用して、次のようなビューをテストできます

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

最後のものは機能しているように見えますが、ちょっとハックな気がします。カピバラにそのようなメソッドはありますvisit_partialか?似たようなものを見つけられると思ったのですが、見つかりCapybara::Driver::Baseませんでした。

4

1 に答える 1

2

あなたのハッキーな方法は私にはうまく見えます。パーシャルがたくさんある場合は、共有コンテキストを使用できます。

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 に答える