Использование pickle с cucumber и factory_girl для создания связанных моделей и передачи параметров во вложенную модель - PullRequest
3 голосов
/ 04 февраля 2010

У меня есть следующие модели:

class User < ActiveRecord::Base
    has_one :profile, :dependent => :destroy
    def before_create
        self.profile ||= Profile.new
    end
end

class Profile < ActiveRecord::Base
  belongs_to :user
  validates_uniqueness_of :name
end

А у меня есть следующие заводы:

Factory.define :user do |user|
  user.email                 { Factory.next :email }
  user.association           :profile
end

Factory.define :profile do |profile|
  profile.name  'Name'
end

Так что это моя особенность:

Given a profile: "John" exists with name: "John"
And a user: "John" exists with profile: profile "John"

Есть ли способ, которым я могу улучшить это? Я хотел бы иметь возможность написать что-то вроде этого:

Given a user: "John" exists with a profile: profile "John" exists with name: "John"

И это создает нечто вроде:

Factory(:user, :profile => Factory(:profile, :name) )

Это почти то, что мне нужен вложенный сопоставитель. Можете ли вы предложить шаг для этого?

Или вы можете предложить альтернативный способ достижения этого?

1 Ответ

1 голос
/ 06 января 2012

Я предлагаю написать ваши шаги в более декларативном стиле и избегать добавления хрупких случайных деталей в ваши сценарии.

Вот несколько ссылок:

...