Невозможно изменить константы при написании тестов Behat для кода PHP - PullRequest
2 голосов
/ 13 марта 2012

У меня есть библиотека на основе PHP, которая берет телефонные номера и переводит их в соответствующие форматы отображения.(Например, американский номер телефона 14083493300 становится 1 (408) 349-4993)

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

Но библиотека довольно громоздкая, и мы просим не-разработчиков ее редактировать, поэтому я хочу представить BDD, чтобы мы могли документировать, что предполагается делать, и следитьдля регрессий.

Первый тестовый набор с использованием Behat работает как брелок;настроить все константы для одного региона, запустить набор тестов, хорошо.Но когда Behat загружает следующий файл .feature, который описывает другой регион с разными значениями для тех же самых констант, PHP barfs.

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

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Невозможно переопределить константу в PHP.Поскольку все функции выполняются в одном PHP-процессе, вы не можете сделать это за один проход.

Решение может запускать их отдельно, как вы сами предложили.Должно быть довольно легко реализовать скрипт, который будет находить все файлы объектов и запускать их.

Вы также можете попробовать запустить код, который определяет константы как отдельный процесс с system () захватите его вывод с помощью ob_start () + ob_get_contents () и проверьте его на ваших шагах.Конечно, это зависит от того, как построен ваш код.

0 голосов
/ 22 марта 2012

Я думаю, что вы можете сбросить или очистить наши константы, что вы хотите, с помощью хука @AfterFeature.

Проверьте документацию об этом: http://docs.behat.org/guides/3.hooks.html

...