Партнерка на PHP. Урок 23. Тестируем модуль global_date.php |
Автор megabax | ||
06.06.2014 г. | ||
Разработка сервиса сайта на PHP на примере партнерской программы. Урок 23. Тестируем модуль global_date.phpЧто бы смотреть урок полностью, подпишитесь на платный раздел. В платном разделе статья находиться здесь. Исходники к уроку вы можете скачать в платном разделе. В нашей партнерской программе используется сторонний модуль global_date.php, любезно предоставленный Данилом Газизовым (www.platformx.ru). Это чужой модуль, поэтому его тем более нужно тестировать, прежде чем применять в нашей программе. И так, давайте разработает для этой библиотеки модульный тест. Кстати, именно модульное тестирование позволило выявить некий сюрприз этой библиотеки, о который можно было бы споткнуться в будущем. И так, поясняю, в чем дело. Пишу тестовую функцию... ... и сюрприз вылез на последней строчке: Как оказалось, что библиотека global_date.php сделана на основе функций PHP, которые работают несколько кривовато. Сам разработчик считает такие погрешности не критичными и в ближайшее время дорабатывать библиотеку не собирается. Тогда я задал вопрос на форуме: как быть с кривостью стандартных функций php. .... ... ...Для начала я просто реализовал альтернативную функцию add_month_to_date ... Обратите внимание, каким образом дописываются незначащие нули к номеру месяца, года или числа месяца. Сначала мы прибавляем впереди максимальное количество нулей, например, для года это 4, для месяца и числа - два. И берем столько цифр, сколько нам нужно. Для этого используем substr, с отрицательным вторым параметром она становится аналогом 1С-овской функции "Прав" - взять правую часть строки (числа у нас представлены в виде строк). Функция add_month_to_date использует daysInMonth, которую я тоже реализовал самостоятельно... .... ... Функция isYearLeap - это функции библиотеки global_date.php, она проверяет, вискосный ли год. Теперь протестируем эту конкретную функцию add_month_to_date:
Как выяснилось, новая функция устраняет данную особенность: Теперь вставляем эту функцию в addMonths... ... ....и продолжаем тестировать, заодно так же протестируем функцию addYears. Весь тест находиться в приложенных исходниках. |
||
Последнее обновление ( 06.06.2014 г. ) |
« След. | Пред. » |
---|