Я пытаюсь немного оптимизировать свои спецификации.У меня обычно возникает проблема при создании тестовых данных для вложенных ресурсов и пользователей.Я обычно заканчиваю с before (: each), который устанавливает данные, это выполняется более чем 120 моими спецификациями.Позвольте мне показать вам: (это не точно, но вы должны понять)
def setup_test_data
@user = FactoryGirl.create(:admin_with_account)
@account = @user.account
3.times do |n|
list = FactoryGirl.create(:list)
list.items << FactoryGirl.create_list(:item, 3)
@account.lists << list
end
end
before(:each){setup_test_data}
subject{List.merge(list1, list2)}
it{should have(6).items}
И вот почему я не могу сократить настройку тестовых данных
def self.merge(lists)
merged_list = lists.first.account.subscriber_lists.build
name = "Merge of "
lists.each do |list|
name << "'#{list.name}', "
list.items.each do |item|
merged_list.items.build(item.dup.attributes)
end
end
merged_list.name = name.chop.chop
merged_list.save!
merged_list.reload # I use this to filter out duplicates via validations
end
Мои параметры:А) перенести некоторую логику обратно в контроллер, меньше зависеть от учетной записи, сохранить в контроллере Б) заглушить / смоделировать намного больше, но с вложенными ресурсами + ассоциациями трудно сделать
В) вашу идею здесь:
Спасибо, Рэй