Используя rspec и factory_girl, где хранить жестко закодированные значения, которые должны быть разделены? - PullRequest
0 голосов
/ 10 марта 2011

Я использую rspec и factory_girl в приложении rails 3.

Я сейчас настраиваю свои фабрики в / spec / factory, и мне просто интересно, где я должен размещать атрибуты-хэши или жестко закодированные идентификаторычто на другие заводы нужно будет ссылаться?

Я новичок в этом вопросе, поэтому ищу руководство о том, как сделать это правильно.

1 Ответ

3 голосов
/ 10 марта 2011

Factory Girl ожидает, что вы используете ассоциации и последовательности, а не жестко закодированные идентификаторы.Следующие примеры дают вам суть того, что нужно искать в rdoc, и основы использования фабрик.Вы, вероятно, должны держаться подальше от любых жестко закодированных идентификаторов, потому что это приведет к хрупким тестам, которые не сработают по случайному случаю (который займет у вас полдня, чтобы добраться до сути).

#the basics
Factory.define(:post) do |f|
  f.association :author
end

Factory.define(:comment) do |f|
  f.text "boo"
end

# callbacks
Factory.define :article_with_comment, :parent => :article do |article|
  article.after_create { |a| Factory(:comment, :article => a) }
end

p = Factory(:article_with_comment)
p.comments.first.text # => "boo"
p.author #=> yep, used the association to make it

#sequences
Factory.define(:author) do |f|
  f.email { Factory.next(:email) }
end

# and override the default behavior
p = Factory(:post, :title => 'new post', :author => Factory(:author, :email => "me@me.com") )
p.author.email # => me@me.com

...deep inside a test

p = Post.find_by_title('new post') # => this is the most basic way to get around id's

Еще немного приятной информации здесь: http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl

...