ruby-on-rails - русском - templates ruby on rails



Предпочитаемый плагин замены светильников в Rails? (6)

Фабричная девушка великолепна. Мы используем его в рабочих нагрузках.

Factory.define :usa, :class => Team do |f|
  f.country_name 'USA'
  f.rank         15.6
end

Factory.define :player do |f|
  f.first_name 'Stevie'
  f.last_name  'Wonder'
  f.team       Factory.build(:usa)
end

Затем в ваших спецификациях вы можете использовать Factory.build(:usa) или Factory.create(:usa) для создания или создания команды США соответственно.

Есть дюжина плагинов Rails, целью которых является замена светильников при тестировании. Вот несколько, о которых я могу думать:

  • замена крепежа
  • заводская девушка
  • фабрики и рабочие
  • рельсы
  • арматура-сценарий
  • объект папа

Возможно, есть и другие. Какой из этих плагинов вы предпочитаете и почему?


Answer #1

+1 заводская девушка


Answer #2

Я лично использую Faker с пользовательским классом Factory. Это позволяет мне создавать мои фабрики и заполнять сгенерированные экземпляры нестационарными данными.

# spec/factory.rb
module Factory
  def self.create_offer(options={})
    Offer.create({
      :code => Faker::Lorem.words(1),
      :expires_on => Time.now + (rand(30) + 1).day
    }.merge(options))
  end
end


# spec_helper.rb
require 'faker'
require 'spec/factory'


# In the specs
@offer = Factory.create_offer(:code => 'TESTING')

Answer #3

Я буду выступать за замену светильника 2 . Ваши атрибуты модели по умолчанию (не заботятся) сохраняются в одном месте, db / example_data.rb и обеспечивают быстродействующие объекты. Любые атрибуты, которые вы указываете при создании, переопределяют атрибуты по умолчанию - это означает, что данные, которые вас интересуют, находятся в тесте , и ничего больше.

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

Версия 2 обеспечивает гораздо более четкий формат определения, но при этом обеспечивает все магии new_*, create_*, and default_* методы для каждой модели.

Я бы избегал любых схем «сценариев», которые поощряют создание все большего числа тестовых данных, которые трудно прочитать позже. Вы можете создавать именованные (пользовательские) объекты с помощью FR2, но я никогда не нашел в этом необходимости.

PS Убедитесь, что вы также рассматриваете свою стратегию тестирования устройств. Светильники и все их аналоги являются реальными объектами, которые попадают в БД, что делает их функциональными или интеграционными. В настоящее время я использую RSpec, который насмехается вместе с stub_model() и последним камнем unit_record, чтобы запретить доступ к БД.


Answer #4

В последнее время я играю с машинистом и копаю его.


Answer #5

Я большой поклонник фабрики, когда вам нужен только один или несколько объектов. Вы можете либо написать свой собственный, либо использовать Фабричную Девушку Thoughtbot.

Для ситуаций, когда вам нужен кураторский набор взаимосвязанных объектов, светильники избиты на фабрике, и вы должны взглянуть на отличные светильники Lite, которые делают светильники значительно более сухими и управляемыми.





fixtures