2017-05-05 50 views
1

我剛剛開始使用Mockery代替PHPUnits自己的嘲笑功能。PHPUnits的嘲笑當量,returnValueMap

Mockery是否有等價的PHPUnits returnValueMap,它可以根據提供給方法調用的特定參數值返回特定值?

這是怎麼用PHPUnit完成的。

<?php 

$stub = $this->createMock(SomeClass::class); 

$map = [ 
    ['a', 'b', 'c', 'd'], 
    ['e', 'f', 'g', 'h'] 
]; 

$stub->method('doSomething') 
    ->will($this->returnValueMap($map)); 

$this->assertEquals('d', $stub->doSomething('a', 'b', 'c')); 
$this->assertEquals('h', $stub->doSomething('e', 'f', 'g')); 

回答

0

我的問題是有點「咄」的時刻爲自己。這是嘲弄相當於PHPUnit中使用returnValueMap()的:

<?php 

$stub = \Mockery::mock(SomeClass::class); 

$stub->shouldReceive('doSomething')->with('a', 'b', 'c')->andReturn('d'); 
$stub->shouldReceive('doSomething')->with('e', 'f', 'g')->andReturn('h'); 

$this->assertEquals('d', $stub->doSomething('a', 'b', 'c')); 
$this->assertEquals('h', $stub->doSomething('e', 'f', 'g')); 

...咄。