2013-04-18 2 views
1

В обычном виде spec-файл я могу проверить вид с Capybara.Как проверить частичное с Capybara?

require 'spec_helper' 

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

С Rspec я могу проверить parital.

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 

последний кажется, работает, но чувствует себя своего рода Hacky. Есть ли какой-нибудь метод в Capybara, такой как visit_partial? Я думал, что могу найти что-то подобное в Capybara::Driver::Base, но я не смог найти.

ответ

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 
Смежные вопросы