Вопрос

Недавно я начал работать над функцией Email2SMS в нашем продукте.Когда я присоединился к проекту, у этого компонента было нулевое покрытие кода модульными тестами.Устаревший код.

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

Существует php-скрипт, который принимает некоторую информацию о сообщении, ищет пользователя в БД и сохраняет некоторую информацию, если все в порядке.

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);

$this->assertStringExistsInLogFile('Email to SMS message was not sent');

Это плохо или нет?Как бы вы решили эту проблему?

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

Решение

Не так уж хорошо.

Протестируйте на более низком уровне, используя emailtosms.php скрипт в качестве простой оболочки, которая обрабатывает аргументы командной строки, а затем передает их в более тестируемый класс.В зависимости от последнего шага вы могли бы написать модульные тесты для выполнения почти всех операций отправки, кроме окончательной (возможно, имитировать последний шаг, который на самом деле отправляет его, и просто сохранить его в переменной, а затем проверить, что у вас там есть что-то действительное).

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

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