2014-03-31 89 views
0

我有一個任務,我試圖讓一個網頁生成一個所有者和他們的狗列表。具體來說,我試圖列出頁面上所有者的名字和他們各自的dog_name。現在我的測試已經在單一所有者/寵物配對上運行,但是當我嘗試使用預先生成的配對測試頁面時,文本不顯示。以下是我的rspec /水豚測試代碼:正確使用Capybara語法?

given(:dog_owner_one) { Dog.create(:first_name => 'Carmen', :last_name => 'Dent', 
    :email => '[email protected]', :dog_name => 'Shelby') } 
given(:dog_owner_two) { Dog.create(:first_name => 'David', :last_name => 'Rubio', 
    :email => '[email protected]', :dog_name => 'Chronus') } 

scenario 'create a valid dog' do 
    valid_dog = Dog.count 
    dog_name = "Rover" 
    first_name = "Daniel" 
    visit new_dog_path 
    fill_in 'First Name', with: first_name 
    fill_in 'Last Name', with: 'Rubio' 
    fill_in 'Email Address', with: '[email protected]' 
    fill_in 'Dog Name', with: dog_name 
    click_button 'Register Dog' 
    expect(page).to have_content('Dog Registered') 
    expect(Dog.count).to eql(valid_dog + 1) 
    expect(page).to have_content(first_name) 
    expect(page).to have_content(dog_name) 
    expect(page).to have_content(dog_owner_one.first_name) 
    expect(page).to have_content(dog_owner_one.dog_name) 
    expect(page).to have_content(dog_owner_two.first_name) 
    expect(page).to have_content(dog_owner_one.dog_name) 
end 

我的語法有問題。我對鐵軌和水豚很新,但我很確定這應該起作用。我試過Dog.make,但是rspec錯誤告訴我有一個未定義的方法'make',所以沒有工作。我也試圖修復這樣的期望語法:

expect(page).to have_content(dog_owner_one[first_name]) 
    expect(page).to have_content(dog_owner_one[dog_name]) 
    expect(page).to have_content(dog_owner_two[first_name]) 
    expect(page).to have_content(dog_owner_one[dog_name]) 

這通過,但它不會顯示在我的網頁上。哪個不好.....我試過這個:

expect(page).to have_content(dog_owner_one.first_name) 
    expect(page).to have_content(dog_owner_one.dog_name) 
    expect(page).to have_content(dog_owner_two.first_name) 
    expect(page).to have_content(dog_owner_one.dog_name) 

可能是什麼問題?我不知道還有什麼要嘗試。

我不知道這將是有益的,但這裏是我爲我的index.html.erb文件代碼:

<h1> List of Registered Dogs </h1> 

<% if @dog.present? %> 
    <ul> 
    <% @dog.each do |dog| %> 
    <li><%= "#{dog.first_name + ':' + ' ' + dog.dog_name}" %></li> 
    <% end %> 
    </ul> 
<% end %> 

回答

0

這可能是因爲它是與你的given塊。 試試︰

background do 
    dog_owner_one = Dog.create(:first_name => 'Carmen', :last_name => 'Dent', :email => '[email protected]', :dog_name => 'Shelby') 
    dog_owner_two = Dog.create(:first_name => 'David', :last_name => 'Rubio', :email => '[email protected]', :dog_name => 'Chronus') 
end 
+0

感謝您的答覆,但我試過這個,它不工作,除非我排除背景/做/結束塊。我不明白爲什麼。 –