Задать вопрос
@rumasterov

Как правильно протестировать такой класс?

Всем привет.

Есть следующий класс:
<?php

class ProductImporter 
{
    private function loadProductListFromExternalSource()
    {
        // обращение к внешнему сервису для загрузки товаров, возвращает массив товаров
    }
	
    private function saveProduct($product)
    {
        // сохранение товара из внешнего сервиса в локальную базу данных
    }
	
    public function import()
    {
        $products = $this->loadProductListFromExternalSource();
	
        foreach ($products as $product) {
            $this->saveProduct($product);
        }
    }
}


Как правильно протестировать такой класс? Тестировать каждый метод отдельно? Или протестировать только метод import и потом проверить что в базе данных появились товары?
  • Вопрос задан
  • 342 просмотра
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@xfg
Тестировать нужно только публичные методы класса. Вообще лучше внедрить внешние сервисы которые отвечают за сохранение и выгрузку в конструктор этого класса, замокать работу с базой/выгрузку и написать чистый юнит-тест. Такие тесты будут быстрыми, короткими и легко поддерживаемыми. На самый важный функционал сайта потом можно будет написать несколько медленных функциональных тестов. И всё, этого вполне достаточно. Сейчас же вы хотите интеграционный тест написать. Уродливый, медленный, с кучей лишнего бойлерплейта. В этом очень мало смысла. Нужно писать юнит-тесты на свой код и только для важных фич типа оплаты или регистрации писать функциональные тесты. Интеграционные тесты не писать вообще. Помните, каждая лишняя написанная вами строка кода, требует вашей дальнейшей поддержки в будущем. Пишем тесты, которые дают наибольший результат при минимуме кода.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽