Как в данном случае написать Unit тест?

Имеется вот такой сервис, в конструкторе он работает с кэшем, настройками и реквестами.

class AuthThrottle implements AuthThrottleContract
{ 
    ...
    public function __construct(Request $request)
    {
        $this->request = $request;
        $this->cache = app('cache.store');
        $this->throttle_settings = config('auth.throttle');
    }
    ...
    
    public function check(): bool
    {
        if(app()->environment() == 'testing') {
            return true;
        }
        ...
    }


Вопросы:
1) Как лучше работать с кэшем внутри Unit теста? В голову приходит только создание Mock-а.
2) Можно ли как-то пробросить конфиги в тест? (config('auth.throttle'))
3) Из-за app()->environment() в коде получаю ошибку, как ее решить?
Call to undefined method Illuminate\Container\Container::environment()
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
agoalofalife
@agoalofalife
Team Lead
На сколько я вижу это инфраструктурный код - поэтому проще его тестировать функциональными тестами (которые в папке Laravel называются Feature)
1) Решается функциональным тестом, будет использоваться тот который укажете - подойдет просто оперативная память
Имеется в виду - что вы просто отправляете запрос и ждете определенный результат
2) Можно задать в тесте - а лучше в файле окружение env.testing
3) Почему у вас ищет метод environment в Container без контекста сказать сложно, этот метод в классе Application
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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