我在测试方法中有以下代码:
$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);
为什么它不起作用,我该如何解决?
答案 0 :(得分:1)
PHPUnit不支持考虑默认参数。
所以你需要改变这个:
$container->method('get')
->will($this->returnValueMap([
['a', 'b'],
['c', 'd']
]));
进入这个:
$container->method('get')
->will($this->returnValueMap([
['a', 1, 'b'],
['c', 1, 'd']
]));
希望这个帮助