У меня проблемы с написанием теста в rspec для will_paginate.Проблема в том, что у меня есть модель с владельцем, которая может иметь много домашних животных.Это приводит к файлу factories.rb, который выглядит следующим образом:
</p>
<pre><code>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 "nisse@test.com"
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
В моем тесте у меня есть
</p>
<pre><code>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.домашние животные) с домашними животными.
Если я делаю @ owner.pets.count, то это 0.
Приложения работают нормально, я просто не могу понять, как написать тест.Я действительно плохо знаком с рельсами и TDD, но я хочу сделать это правильно.
Дайте мне знать, если я должен добавить дополнительную информацию.
Cheers Carl