Laravel 拉威尔特征测试。缓存模拟不工作!CacheManager::driver(),但未指定期望值

Laravel 拉威尔特征测试。缓存模拟不工作!CacheManager::driver(),但未指定期望值,laravel,testing,mocking,phpunit,laravel-5.8,Laravel,Testing,Mocking,Phpunit,Laravel 5.8,当我使用单元测试测试我的应用程序时,缓存冒烟工作得很好。但是当我尝试通过特性测试来测试我的api时,我遇到了一个异常 public function testGet() { Cache::shouldReceive('rememberForever')->times(5)->andReturn([]); Cache::shouldReceive('has') ->once() ->andReturn(false);

当我使用单元测试测试我的应用程序时,缓存冒烟工作得很好。但是当我尝试通过特性测试来测试我的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']);
}
Tests\Feature\Controller\API\Site\TableApiControllerTest::testGet Mockry\Exception\BadMethodCallException:收到 Mockry_2_Lightning_Cache_CacheManager::driver(),但没有期望值 被指定

在其他单元测试中,完全相同的模拟工作没有错误。

我在这里找到了答案-


我想您已经这样做了,但是我会在缓存被调用之前检查相同的代码是否正在执行,以确保这是一个模拟问题。实际缓存是否被触摸?dd(123);在缓存正常工作之前,您是否覆盖了
phpunit.xml
文件上的某些环境变量?仅DB\U连接
    $cacheDriver = app('cache')->driver();
    Cache::shouldReceive('driver')->andReturn($cacheDriver);