Модульное тестирование с разными результатами - PullRequest
0 голосов
/ 08 апреля 2019

Мне нужно написать модульный тест для следующего кода:

        $attempts           = 1;
        $data               = null;

        while (null === $data) {
            try {
                $data = $this->service->function();
            } catch (\Exception $e) {
                if ($attempts >= self::MAX_NUM_OF_ATTEMPTS) {
                    throw $e;
                }

                $attempts++;
            }
        }

Мне нужно, чтобы модульный тест возвратил исключение с первой попытки и успешный ответ со второй попытки.

Я пробовал что-то вроде

        $this->service->function()->willThrow(\Exception::class);

        $this->service->function()->will(function ($client, $succes) {
           $this->service->function($client)->willReturn($succes);
        });

но тогда я получаю ошибку: вызов функции-члена () в null

...