我在使用rspec为will_paginate编写测试时遇到了问题。问题是我有一个拥有许多宠物的所有者的模型。这导致factories.rb文件看起来像这样:对于关联对象的factory_girl和will_paginate的RSpec测试
Factory.define :owner do |owner|
owner.personid "1111111"
owner.firstname "Nisse"
owner.lastname "Gunnarsson"
owner.street "Street"
owner.postaladress "38830"
owner.town "Town"
owner.phone "555-5555"
owner.mobile "555-5556"
owner.email "[email protected]"
owner.reminder true
end
Factory.define :pet do |pet|
pet.name "Hedvig"
pet.specie "Rabbot"
pet.breed "Lowen/vadur"
pet.colour "Madagaskar"
pet.association :owner
end
在我的测试我有
describe "Get show" do
before(:each) do
@owner = Factory(:owner)
30.times do
#@owner.pets << Factory.build(:pet)
@pet = Factory.build(:pet, :owner => @owner)
#@owner.pets << @pet
end
end
it "should have an element for each pet" do
get :show, :id => @owner
@owner.pets[0..2].each do |pet|
response.should have_selector("td", :content => pet.name)
end
response.should have_selector("td", :content => "Hedvig")
end
it "should paginate pets" do
get :show, :id => @owner
response.should have_selector("div.pagination")
response.should have_selector("span.disabled", :content => "Previous")
response.should have_selector("a", :href => "/pets?page=2",
:content => "2")
response.should have_selector("a", :href => "/pets?page=2",
:content => "Next")
end
end
所以我创建所有者与工厂,没有问题存在。我能得到业主的puts @owner.firstname
的名字,我也可以创建一个宠物,具有正确的所有者(@pet.owner.firstname
),但我无法弄清楚如何填补业主阵列(@ owner.pets)宠物。
如果我做了@ owner.pets.count为0。
的应用程序工作正常,我只是无法弄清楚如何编写测试。我对轨道和TDD都非常陌生,但我想做的对。
让我知道我是否应该添加更多信息。
干杯卡尔
太棒了!这解决了它。我想我还有很多东西需要学习。 (这很有趣)。太感谢了! – abegbg