【发布时间】:2014-04-02 17:52:24
【问题描述】:
我有一项任务,我试图让网页生成所有者及其狗的列表。具体来说,我试图在页面上列出所有者的名字和他们各自的 dog_name。现在,到目前为止,我的测试只使用了一对主人/宠物,但是当我尝试使用预先生成的对测试页面时,文本没有显示出来。以下是我的 rspec/capybara 测试代码:
given(:dog_owner_one) { Dog.create(:first_name => 'Carmen', :last_name => 'Dent',
:email => 'cdent@someemail.com', :dog_name => 'Shelby') }
given(:dog_owner_two) { Dog.create(:first_name => 'David', :last_name => 'Rubio',
:email => 'dnr@someemail.com', :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: 'www.drubio1989@gmail.com'
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
我的语法有问题。我对 Rails 和 capybara 很陌生,但我很确定这应该有效。我试过 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 %>
【问题讨论】:
标签: ruby-on-rails ruby rspec capybara