iKapex
@iKapex

Поможете разобраться в синтаксисе?

Всем привет.
Сейчас смотрю FactoryGirl.
Я не понимаю конструкции вида
FactoryGirl.define do
  factory :home do
  #потом заполняются поля и сохраняются
  end
end

а потом просто пишут где-то
test = create (:home)

Я не понимаю - что за конструкция такая:
factory :home do
...
end

factory - это метод или это что?
Да и как можно написать в самой Factory такую шткуку, как factory?
Кажется, что в самой Factory это реализовано через yeild, но тогда зачем пользоваться этим методом, если мы все делаем сами? Посмотрела про DSL, но, вроде, не особо подходит.
Всем спасибо за ответы
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
Jeiwan
@Jeiwan
factory – это метод, которому передается параметр :home (в руби, как известно, круглые скобки можно опускать) и блок (всё, что между do и end). factory вызывается в блоке, который передается в FactoryGirl.define, где define – метод класса FactoryGirl. И, да, всё это и есть тот самый DSL.
test = create (:home) – на самом деле, полная запись выглядит как FactoryGirl.create(:home). Просто чтобы не писать постоянно класс FactoryGirl, его методы инклудят в файле spec_helper.rb: config.include FactoryGirl::Syntax::Methods
Тема довольно трудная для понимания. О том, как устроен FactoryGirl очень хорошо написано в статье https://robots.thoughtbot.com/writing-a-domain-spe... – там пишется свой FactoryGirl с объяснением всех моментов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы