@ganjo888

Правильно ли я пишу phpunit тесты?

мой метод
public function getContent($query): ?string
    {
        if (isset($query) && !filter_var($query, FILTER_VALIDATE_URL)) {
            echo 'Некорректный Url';
        }
        $queryEncode = urlencode($query);
        if ($result = $this->loadFromCache($queryEncode)) {
            return $result['content'];
        }
        return null;
    }

Вот мой тест, буду благодарен за поправки и оценку моего теста, правильный ли он? Прошу поправить , если это не так
public function testGetContent()
    {
        $url = 'https://phpunit.de';

        $client = $this->createMock(Client::class);

        $contentService = new ContentService($client);
        $result = $contentService->getContent($url);

        $this->assertEquals(null, $result);
    }
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вообще говоря что бы покрыть этот метод нужно как минимум 3 теста: когда filter_var не отработал, result приводится к true и result приводится к false. Еще не хватает мока метода loadFromCache, я не вижу, что бы вы покрыли его лог ку работы.

Проверка на isset не имеет смысла. Я бы еще добавил type hint на query. Что будет, если туда closure загнать?

Так же если чтото идет не так - бросайте исключения, не надо вот этой мерзостью echo обмазываться.

UPD

ganjo888 Вот вам полезного чтива: https://github.com/index0h/php-conventions#7-тести...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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