【问题标题】:How to mock Cache::remember in Laravel如何在 Laravel 中模拟 Cache::remember
【发布时间】:2016-04-04 07:11:38
【问题描述】:

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

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

但我收到此错误:

异常“嘲弄\异常\NoMatchingExpectationException” 带有消息'没有找到匹配的处理程序 Mockery_0_Illuminate_Cache_CacheManager::记住 (“my_key”,120,对象(闭包))。该方法是 意外或其参数与预期参数不匹配 此方法的列表

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

如何模拟 Cache::remember 响应?

【问题讨论】:

    标签: php laravel unit-testing laravel-5 mockery


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      with 方法的第三个参数替换为\Closure::class 以匹配任何闭包。

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

      【讨论】:

      • 什么是 Closure::class... 当我们使用它时。
      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 2018-03-18
      • 2019-01-11
      • 2021-08-29
      • 2017-02-06
      • 1970-01-01
      • 2019-09-07
      • 2022-01-14
      相关资源
      最近更新 更多