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

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

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

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


person Blankman    schedule 09.03.2011    source источник


Ответы (1)


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 => "[email protected]") )
p.author.email # => [email protected]

...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

person Jed Schneider    schedule 10.03.2011