Mockery为多个调用指定预期参数

时间:2014-10-22 14:32:34

标签: php symfony mocking phpunit mockery

我正在尝试模拟一个对象,该对象获得对同一函数的两次调用但具有不同的参数。它很容易为多个调用返回不同的返回值,但我无法在任何地方找到如何使用参数验证来执行此操作。

我试过了:

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->twice()
    ->with(Events::SELECT,\Mockery::type('\Not\Really\A\Namespace\Event'))
    ->with(Events::ACTIVITY,\Mockery::type('\Not\Really\A\Namespace\Event');

$this->eventDispatcher
        ->shouldReceive('dispatch')
        ->twice()
        ->with(
            [Events::SELECT,\Mockery::type('\Not\Really\A\Namespace\Event')],
            [Events::ACTIVITY,\Mockery::type('\Not\Really\A\Namespace\Event')]
        );

但他们工作。

从输出PHPUnit给我看起来好像我得到一个数组?

1 个答案:

答案 0 :(得分:15)

嗯,这很快; P显然你可以做到这一点并且它运作得很好:

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->with(Events::SELECT,\Mockery::type('\Not\Really\A\Namespace\Event'));

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->with(Events::ACTIVITY,\Mockery::type('\Not\Really\A\Namespace\Event');