Je rencontre des problèmes pour écrire un test dans rspec pour will_paginate. Le problème est que j'ai un modèle avec un propriétaire qui peut avoir beaucoup d'animaux. Cela conduit à un fichier factories.rb qui ressemble à ceci:Test RSpec avec factory_girl et will_paginate pour les objets associés
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
Dans mon test j'ai
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
Je crée donc un propriétaire à l'usine, il n'y a pas de problème. Je peux obtenir le nom des propriétaires par puts @owner.firstname
Je peux également créer un animal de compagnie, qui a le bon propriétaire (@pet.owner.firstname
), mais je ne peux pas comprendre comment remplir le tableau des propriétaires (@ owner.pets) avec des animaux de compagnie.
Si je fais un @ owner.pets.count est 0.
Les applications fonctionne très bien, je ne peux pas comprendre comment écrire le test. Je suis vraiment nouveau sur les rails et TDD mais je veux le faire correctement. Dites-moi si je devrais ajouter plus d'informations.
Vive Carl
Brillant! Cela l'a résolu. Je suppose que j'ai encore beaucoup à apprendre. (ce qui est assez amusant). Merci un million! – abegbg