2012-04-20 4 views
5

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

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

Есть ли способ применить преобразование только к определенным шагам?

ответ

2

Вы можете использовать тег и фильтр Before, чтобы установить переменную экземпляра в World. Затем это доступно для вашего Transform, чтобы он мог выполнять преобразования, специфичные для тега. Например, если вы только хотели Transform целых когда @hook тег присутствует:

Transform /(\d+)/ do |num| 
    if @hook 
    num.to_i 
    else 
    num 
    end 
end 

Before('@hook') do 
    @hook = true 
end 

Новый Мир создан для каждого сценария и до фильтров называются. Таким образом, @hook будет сброшен для каждого сценария.

+0

Интересная идея, но теперь файлы функций должны быть осведомлены о преобразованиях, когда это действительно определение шага, которое волнует –

+0

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

+0

Спасибо, это может быть лучшее, что возможно на данный момент! –

Смежные вопросы