DenisOgr
@DenisOgr
Developer

Как тестировать методы, работающие с большими наборами данных?

Я работаю с большими массивами данных на пхп. Пишу скрипты с математическими вычислениями. Для каждого скрипта (для совокупности методов в класса) пишу модульные тесты (phpunit), в основном, чтобы сравнивать ручные просчеты (в тестах) и автоматические просчеты (в скрипте).

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

Но для тестов мне нужно, чтобы метод их возвращал, чтобы я сравнивал результаты.
Я решил проблему установкой констант в окружении, если тестовое окружение, то возвращай результат (небольшой по размеру), если боевой, то удаляй.

Как по мне, не совсем хорошее решение, так как метод возвращает разные(по типу) результаты в зависимости от окружение. Как решить? Кто что посоветует? Или оставить так?

Уточнение: Во время тестов, мне нужно что бы метод класса возвращал данные, так как я буду их сверять на правильность. Тесты работают с тестовой небольшой базой. В боевых условиях, с настоящей базой, данных очень много, получаются большие массивы, и хранить/возвращать их, метод не должен. Выход один, изменить логику метода, в зависимости от окружение. А это не гуд. Как еще можно поступить?
  • Вопрос задан
  • 3090 просмотров
Решения вопроса 1
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
В любом случае изменение логики метода в зависимости от окружения плохое решение, я бы сделал такой вариант, смый главный мотод в котором генеряться данные разбил бы на подметоды, и вынес бы генерацию данных в отдельный метод например generateData и тестировал бы его в phpunit, вызывал бы его в основном метода $data = $this->generateData(), а потом удалял бы данные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы