Как модульно протестировать перенаправления в cfwheels

StackOverflow https://stackoverflow.com/questions/2293562

  •  21-09-2019
  •  | 
  •  

Вопрос

Каков был бы правильный способ модульного тестирования действия контроллера, которое выполняет перенаправление?

Обновить:Я основной разработчик проекта CFWheels.Вся причина, по которой я задаю этот вопрос, заключается в том, что в настоящее время я работаю над улучшением встроенной среды тестирования, которая у нас есть, и мне интересно, как подойти и реализовать что-то подобное в CFWheels, чтобы разработчикам было проще тестировать свое приложение.

Обновить:Я придумал, как это проверить.похоже, что нам придется немного переписать внутренние компоненты контроллера wheels, чтобы выполнить перенаправление после завершения действия и после того, как оно будет передано обратно диспетчеру.единственное, что при таком подходе заключается в том, что любой код после redirectTo() будет выполняться, ЗА ИСКЛЮЧЕНИЕМ случаев, когда вы заранее примете соответствующие меры предосторожности;это включает в себя либо ввод возврата после инструкции redirectTo(), либо ввод условных проверок в вашем действии, чтобы изолировать код redirectTo() от другого кода.Это также включает в себя проверку того, что больше ничего не отображается после выполнения redirectTo().

Это было полезно?

Решение

Подобные вещи становится намного проще тестировать, если вы разделите механизм перенаправления на несколько функций:а) функция, которая определяет целевой URL и б) функция, которая выполняет перенаправление.

Таким образом, вы можете очень легко протестировать functionA, а functionA - это та функция, которую вы хотите протестировать в любом случае.Это код ты написал.Вот где ваша настоящая логика.functionB - это не ваш код;это ColdFusion guts, и нет особого смысла тестировать CFLocation.

Если вы выполняете какую-то миссию по достижению 100% тестового покрытия, то вы могли бы провести 10 тестов для functionA, где вы используете все различные ветви своей логики, а затем один тест для functionB, который выполняет перенаправление способом, предложенным Терри;таким образом, вы получаете только 1 медленный тест вместо 10.

Вы можете обобщить этот подход для использования в других сценариях:файловые системы, веб-сервисы, http, ftp, электронная почта и т. Д:"Извлеките материал, который вы можете контролировать и хотите протестировать, из материала, который вы не можете контролировать и не хотите тестировать"

Другие советы

Вы могли бы вызвать контроллер с соответствующим URL-адресом, используя cfhttp с перенаправлением, установленным в false.Затем протестируйте результирующую структуру cfhttp, в ней должна быть информация о том, куда приведет вас перенаправление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top