【问题标题】:Checking Mockery arguments using Mockery::contains( )使用 Mockery::contains( ) 检查 Mockery 参数
【发布时间】:2016-10-26 09:43:56
【问题描述】:

我正在使用 Mockery 测试一个创建日历事件的类。它将开始和结束日期的时间戳传递给我的 EventRepository 的 create() 方法。还有其他数据作为参数包含在内,但我只关心此测试的时间戳是否正确。

此代码适用于测试 one 事件的创建:

$this->repo->shouldReceive('create')->once()
           ->with(Mockery::contains(1466460000, 1466467200));

但是,当我将 Mock 扩展到被调用 两次create() 方法时,它失败了。

$this->repo->shouldReceive('create')->twice()
           ->with(Mockery::contains(1466460000, 1466467200),
                 Mockery::contains(1466632800, 1466640000));

Mockery 不使用语法->with(args1, args2) 来指定多次调用同一函数的参数吗?

【问题讨论】:

    标签: php unit-testing laravel phpunit mockery


    【解决方案1】:

    当被测方法具有多个参数时,使用具有多个参数的语法。

    对于您的用例,您需要执行以下操作:

    $this->repo->shouldReceive('create')->once()
              ->with(Mockery::contains(1466460000, 1466467200));
    $this->repo->shouldReceive('create')->once()
              ->with(Mockery::contains(1466632800, 1466640000));
    

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 2014-12-24
      • 2017-09-08
      • 2022-01-04
      • 2019-04-21
      • 2022-01-14
      • 2019-04-15
      • 2018-03-26
      相关资源
      最近更新 更多