2016-09-27 39 views
2

的方法我有一个测试方法如下代码:无法嘲笑恒默认PARAM

$container = $this 
    ->getMockBuilder(ContainerInterface::class) 
    ->getMock(); 

$container->method('get') 
    ->will($this->returnValueMap([ 
     ['a', 'b'], 
     ['c', 'd'] 
    ])); 

var_dump($container->get('a')); 

exit; 

我只是想创建一个存根(基于接口的)。但是这返回NULL。但是,如果我将方法从get更改为has,它确实有效(返回b)。

的不同签名之间如下:

public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE); 

public function has($id); 

为什么不工作,我该如何解决?

回答

1

PHPUnit不支持考虑默认参数。

所以,你需要改变这一点:这个

$container->method('get') 
    ->will($this->returnValueMap([ 
     ['a', 'b'], 
     ['c', 'd'] 
    ])); 

$container->method('get') 
    ->will($this->returnValueMap([ 
     ['a', 1, 'b'], 
     ['c', 1, 'd'] 
    ])); 

希望这有助于