Laravel 拉威尔特征测试。缓存模拟不工作!CacheManager::driver(),但未指定期望值
当我使用单元测试测试我的应用程序时,缓存冒烟工作得很好。但是当我尝试通过特性测试来测试我的api时,我遇到了一个异常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);
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);