Тестирование функций Laravel.Кеш издевается не работает!CacheManager :: driver (), но ожидания не указаны - PullRequest
0 голосов
/ 21 мая 2019

Когда я тестирую свое приложение с модульным тестированием, кеширование работает хорошо. Но когда я пытаюсь проверить свои API через функциональные тесты, я получаю исключение.

public function testGet()
{
    Cache::shouldReceive('rememberForever')->times(5)->andReturn([]);

    Cache::shouldReceive('has')
        ->once()
        ->andReturn(false);

    Cache::shouldReceive('forever')
        ->once()
        ->andReturn([]);

    $response = $this->getJson('/api/table/get');
    $response->assertOk();

    $responseArr = $response->getOriginalContent();
    $this->assertEmpty($responseArr['table']);
}

Тесты \ Функция \ Controller \ API \ Site \ TableApiControllerTest :: testGet Mockery \ Exception \ BadMethodCallException: получено Mockery_2_Illuminate_Cache_CacheManager :: driver (), но никаких ожиданий были указаны

Точно такая же насмешка в других юнит-тестах работает без ошибок.

1 Ответ

0 голосов
/ 21 мая 2019

Я нашел ответ здесь - https://github.com/laravel/framework/issues/10803#issuecomment-401611084%23issuecomment-401611084

    $cacheDriver = app('cache')->driver();
    Cache::shouldReceive('driver')->andReturn($cacheDriver);
...