gpt4 book ai didi

laravel - 如何在 phpunit 测试中使用带有模拟缓存的缓存标签?

转载 作者:行者123 更新时间:2023-12-04 09:45:55 25 4
gpt4 key购买 nike

我已经在 Laravel 项目上实现了缓存标签,我的 Controller 中有这样的东西:

if (Cache::tags(['api'])->has('someKey')) {
return new JsonResponse(Cache::tags(['api'])->get('someKey'));
}

我想编写一个 phpunit 测试来测试这段代码:我模拟了在 Laravel 文档中找到的缓存,但我没有找到任何关于如何使用 tags 的信息。在模拟缓存上

我试过 :
Cache::tags(['api'])->shouldReceive('has')->with('someKey')->andReturn(true)->once();

或者
Cache::shouldReceive('has')->tags(['api'])->with('someKey')->andReturn(true)->once();

但这些都不起作用,我得到了 Call to undefined method Illuminate\Cache\ArrayStore::shouldReceive()或者 call_user_func_array() expects parameter 1 to be a valid callback, class 'Mockery\Expectation' does not have a method 'tags'
有人有线索吗?多谢 :)

最佳答案

您将需要自行模拟标签调用并使用 ->andReturnSelf()能够制作模拟链。所以打电话Cache::tags(['api'])返回模拟实例。

Cache::shouldReceive('tags')->with(['api'])->andReturnSelf();

Cache::shouldReceive('has')->once()->with('someKey')->andReturn(true);
Cache::shouldReceive('get')->once()->with('someKey')->andReturn('result');

关于laravel - 如何在 phpunit 测试中使用带有模拟缓存的缓存标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62117532/

25 4 0