繁体   English   中英

如何模拟Cache ::在Laravel中记住

[英]How to mock Cache::remember in Laravel

在单元测试方法中,我试图像这样模拟一个Cache::remember响应:

Cache::shouldReceive('remember')
    ->once()
    ->with('my_key', 120, function() {}) // There are 3 args in remember method
    ->andReturn([]);

但我得到这个错误:

异常'Mockery \\ Exception \\ NoMatchingExpectationException',消息'找不到Mockery_0_Illuminate_Cache_CacheManager :: remember(“my_key”,120,object(Closure))的匹配处理程序。 方法是意外的或其参数与此方法的预期参数列表不匹配

我不明白为什么我得到这个错误,并没有在Laravel文档中找到任何关于此的内容。 它说没有匹配,但它似乎匹配。

我如何模拟Cache::remember响应?

更换的第三个参数with方法\\Closure::class匹配任何关闭。

Cache::shouldReceive('remember')
    ->once()
    ->with('my_key', 120, \Closure::class)
    ->andReturn([]);

查看有关模拟缓存外观的挑战的此问题 -

https://github.com/laravel/framework/issues/10803

也参考

https://github.com/laravel/framework/issues/9729

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM