为多个调用指定预期参数的嘲弄

2022-01-25 00:00:00 mocking php symfony phpunit mockery

I am trying to mock an object that gets two calls to the same function but with different arguments. It's pretty straight forward to give back different return values for multiple calls but I can't find anywhere how to do it with the argument validation.

I tried:

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->twice()
    ->with(Events::SELECT,Mockery::type('NotReallyANamespaceEvent'))
    ->with(Events::ACTIVITY,Mockery::type('NotReallyANamespaceEvent');

And

$this->eventDispatcher
        ->shouldReceive('dispatch')
        ->twice()
        ->with(
            [Events::SELECT,Mockery::type('NotReallyANamespaceEvent')],
            [Events::ACTIVITY,Mockery::type('NotReallyANamespaceEvent')]
        );

But they don't work.

From the output PHPUnit gives me it seems like I'm getting an array?

解决方案

Well that was fast ;P Apparently you can do this and it works just fine:

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->with(Events::SELECT,Mockery::type('NotReallyANamespaceEvent'));

$this->eventDispatcher
    ->shouldReceive('dispatch')
    ->with(Events::ACTIVITY,Mockery::type('NotReallyANamespaceEvent'); 

相关文章