2014-10-22 5 views
7

Ich versuche, ein Objekt zu verspotten, das zwei Aufrufe derselben Funktion, aber mit unterschiedlichen Argumenten erhält. Es ist ziemlich einfach, verschiedene Rückgabewerte für mehrere Aufrufe zurückzugeben, aber ich kann nirgends finden, wie man es mit der Argumentvalidierung macht.Mockery, das erwartete Argumente für mehrere Aufrufe angibt

Ich habe versucht:

$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'); 

Und

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

Aber sie nicht Arbeit tun.

Von der Ausgabe, die PHPUnit mir gibt, scheint es, als ob ich ein Array bekomme?

Antwort

10

Nun, das schnell war; P Anscheinend kann man dies tun, und es funktioniert gut:

$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');