2013-12-03 2 views
0

У меня есть цикл «has_selector», который не проходит, но более прямой тест с использованием Capybara.string делает. Может кто-нибудь объяснить это?Ошибка в Capybara 2.1.0 & Rspec 2 'is_selector'

require 'spec_helper' 

describe "Item pages" do 

    subject { page } 

    describe "Item list" do 
    let(:user) { FactoryGirl.create(:user) } 

    before do 
     FactoryGirl.create(:item, user: user, description: "Testing") 
     FactoryGirl.create(:item, user: user, description: "Testing 2") 
     sign_in user 
     visit items_path 
    end 

    it { should have_link("Logout") } 

    it "should render the user's list of items" do 
     user.items.each do |item| 
      #expect(page).to have_selector("li##{item.id}", text: item.description) 
      Capybara.string(page.body).has_selector?("li##{item.id}", text: item.description) 
     end 
     end 
    end 
end 

Когда этот тест выполняется комментируемого из "ожидают() тест не проходит, но тест ниже этого делает. Сообщение отказ:

Failure/Error: expect(page.body).to have_selector("li##{item.id}", text: item.description) 
    NoMethodError: 
     undefined method `has_selector?' for #<String:0x007fe2a9782dd0> 

ответ

1

Причина ошибки в том, что вы звоните has_selector? на String класса. has_selector? от Capybara::Node::Matchers модуль.

Чтобы устранить проблему, обновите пример следующим:

it "should render the user's list of items" do 
    user.items.each do |item| 
    #expect(page).to have_selector("li##{item.id}", text: item.description) 
    page.has_selector?("li##{item.id}", text: item.description) 
    end 
end 
Смежные вопросы