Изготовить с датами работы


Я использую такой код везде. Как я могу сократить этот код, так что мой код Ruby выглядит намного чище?

Fabricate(:tl, :when =>Date.yesterday.to_s,:work => 266,:type => "fast" )
Fabricate(:tl, :when =>Date.yesterday.to_s,:work => 100,:type => "super_fast" )
Fabricate(:tl, :when =>Date.yesterday.to_s,:work => 50,:type => "ludicrous" )
Fabricate(:tl, :when =>Date.yesterday.to_s,:work => 900,:type => "budget" )


554
5
задан 19 августа 2011 в 07:08 Источник Поделиться
Комментарии
4 ответа

Я обнаружил, что я могу использовать хэш({}).каждый метод, чтобы высушить код. Это :

{"fast"=>266, "super_fast" => 100, "ludicrous" => 50, "budget" => 900}.each{ |key, value|
Fabricate(:tl, :when =>Date.yesterday.to_s,:work => value,:type => key )
}

Если есть техника лучше, пожалуйста, поделитесь ею.

6
ответ дан 19 августа 2011 в 10:08 Источник Поделиться

Как насчет определения нового метода фасад и призвание, которое столько раз, сколько необходимо? Вы можете положить в некоторые санитарные проверки на аргументы таким образом. Скажем, например, у нас были:

def fixture(attrs)
raise ArgumentError unless Hash === attrs
key = attrs.keys.first

Fabricate(:tl, :when => Date.yesterday.to_s,
:work => key.to_s, :type => attrs[key])
end

Затем вы можете создавать свои объекты так,

fixture :ludicrous => 50
fixture :super_fast => 100
fixture :fast => 266
fixture :budget => 900

Ты все еще называешь один и тот же метод несколько раз, но я думаю, что он читает лучше.

4
ответ дан 26 августа 2011 в 06:08 Источник Поделиться

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

Скажем, человек должен быть 18 лет или старше, чтобы делать определенные вещи на сайте. Вы бы создали конструктор такой:

Fabricator(:person, :birthdate => Date.today - 18.years)

Сейчас, в большинстве случаев вы бы просто сказать изготовить (человек), но в Примере, указав, что несовершеннолетняя человеку не позволено делать то, что вы хотели сказать:

Fabricate(:person, :birthdate => Date.today - 18.years + 1.day)

4
ответ дан 2 сентября 2011 в 02:09 Источник Поделиться

Может быть, я в меньшинстве, но я всегда был поклонником не сушить тестовый код. Я думаю, когда вы пытаетесь высушить вещи, вы в конечном итоге становится менее подвижным. А вы хотите, чтобы ваши тесты должны быть как можно более конкретным в каждом случае.

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

Что на мой взгляд является то, что тесты все.

2
ответ дан 3 сентября 2011 в 07:09 Источник Поделиться