2015-05-29 3 views
0

Я пытаюсь проверить мои единицы app.I имеют order модель и эта модель имеет attr_accessor register_client .Если аксессор имеет значение 1:Почему эта фабрика не работает?

order.client = User.create 

это работает, но когда я пытаюсь проверить это - Я создаю завод

FactoryGirl.define do 

    factory :order do 
    username Faker::Name.name 
    register_client "1" 
    end 

end 

и он терпит неудачу с:

order = FactoryGirl.create(:order) 
order.client 
=> nil 

ответ

1

Вы должны сделать:

FactoryGirl.define do 

    factory :user do 
    #put necessary here 
    end 

    factory :order do 

    trait :with_client do 
     register_client "1" 
     association :client, factory: :user 
    end 

    trait :unregistered_client do 
     username { Faker::Name.name } 
    end 

    factory :order_with_client, traits: [:with_client] 
    end 

end 

Тогда вы должны:

FactoryGirl.create(:order, :with_client) 
# same as 
FactoryGirl.create(:order_with_client) 

FactoryGirl.create(:order, :unregistered_client) 
+0

спасибо, имя пользователя это имя человека, который делает заказ :) – wweare

+0

то у вас есть это, так как у вас есть отношения – apneadiving

+0

клиента, клиент может быть зарегистрирован или нет. Для этого я использую accessor 'register_client', его значение может быть« 0 »(клиент не регистрируется wan) и« 1 »(регистр желания клиента) – wweare