2017-02-04 3 views
0

Как реализовать методы, предоставляемые с помощью ассоциации ActiveRecord с использованием Factory Girl и RSPEC? Код работает так, как я хочу, но я не могу создать тест функционального представления.Проверка просмотра RSPEC со связанными методами

Сценарий - это «пользователь», который имеет много «фото». Существует загрузочный загрузчик Carrierwave, связанный с 'pic' с именем 'photo'.

Контроллер:

@users = User.includes(:pics).order("pics.pic_order ASC") 

Вид:

<% @users.each do |user| %> 
    <%= image_tag(user.pics.first.photo.url(:aspect15small)) %> 
<% end %> 

Factory Пользователь:

factory :user do 
    height 60 
    weight 150 
end 

Pic Factory:

factory :pic do 
    photo { Rack::Test::UploadedFile.new(File.join(Rails.root, 'spec/photos/user1.jpg'))} 
    user 
    pic_order {generate(:pic_order)} 
end 

View Spec:

pics = build_stubbed_list(:pic, 10) 
users = build_stubbed_list(:user, 10) 
assign(:users, users) 
render 

Запуск результатов спецификации в ActionView :: Template :: Ошибка: не определен метод `фото» для ноль: NilClass. Очевидно, что у пользователя нет связанного с ним изображения.

Я пробовал множество методов создания ассоциации в спецификации, но еще не успел.

ответ

0

Вы можете создавать связанные объекты на заводе самостоятельно. попробуйте это

factory :user do 
    height 60 
    weight 150 

    after(:build) do |user| 
    if user.pics.empty? 
    user.pics.push build(:pic), build(:pic) 
    end 
    end 
end 
+0

Спасибо. Это указывало мне в правильном направлении. –

Смежные вопросы