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 %>
感謝您的答覆,但我試過這個,它不工作,除非我排除背景/做/結束塊。我不明白爲什麼。 –