Одна хитрость, которую я нашел очень полезной в прикладном программировании на rails, заключается в том, что class_eval
можно использовать для создания методов на лету. Сейчас я начинаю тестирование, и мне интересно, можно ли использовать аналогичную идею для генерации тестов.
Например, у меня есть before_filter
, чтобы потребовать, чтобы пользователь вошел в систему для всех действий в контроллере. Я хотел бы написать тесты, которые гарантируют, что before_filter
применяется для всех действий. Вместо того чтобы писать каждый тест по отдельности, я бы хотел сгенерировать все эти тесты автоматически.
Рекомендуется ли этот тип тестирования, или я должен просто придерживаться индивидуальной проверки? Если это так, как можно поступить так?
РЕДАКТИРОВАТЬ: Это может выглядеть примерно так:
actions = {:index => :get,:show => :get,:edit => :get,:update => :put}
actions.each_pair do |action,type|
class_eval(%Q{def test_user_required_for_#{action}
set_active_user users(:one)
#{type} :#{action}
assert flash[:error]
assert_redirected_to :action => :index
end
})
end
Теперь, когда люди убедились, что это может быть полезно, куда бы я поместил такой блок кода, чтобы он выполнялся один и только один раз для создания этих тестов?