Обработка недоступного кода с покрытием кода - PullRequest
1 голос
/ 06 апреля 2020

В моем проекте есть метод, который проверяет, находится ли число в диапазоне

public function foo(int $number): string
{
    // simple logic to get my point across

    if ($number > 0) {
        return 'foo';
    }

    if ($number === 0) {
        return 'bar';
    }

    if ($number < 0) {
        return 'baz';
    }

    assert(0);
}

В этом простом примере функция всегда возвращает один из операторов if. Однако, используя phpunit s покрытие кода, последний assert(0); помечается как невыполненный.

Я, как программист, хочу указать, что если программе не разрешено достигать этой точки, и если достигнуто, то это вина разработчика. Это, однако, вводит «недостижимый» код, например, если разработчик правильно реализовал вышеуказанную логику c, она никогда не будет выполнена.

Мне не нравится мой обходной путь для достижения 100% оценки покрытия кода , Вот как я справляюсь с этим на данный момент:

public function foo(int $number): string
{
    $value = null;

    if ($number > 0) {
        $value = 'foo';
    }
    if ($number === 0) {
        $value = 'bar';
    }
    if ($number < 0) {
        $value = 'baz';
    }

    return $value;
}

Это правильный способ достижения 100% оценки покрытия кода, или я должен просто отбросить эту цель и жить с непроверенным assert(0); / throw new Exception() внизу кода?

...