我正在尝试使用PHPUnit的returnValueMap()来删除读取的结果.它没有产生预期的结果,但是等效的returnCallback()确实如此.如果您想亲自检查,我已经提供了我的测试用例.
returnValueMap()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnValueMap(array(
array('subscription_id', null),
array('name', 'Monday Farms')
)));
$enterprise->subscribe('basic');
Run Code Online (Sandbox Code Playgroud)
结果:
Subscription ID: NULL
Name: NULL
Run Code Online (Sandbox Code Playgroud)
returnCallback()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnCallback(function ($arg) {
$map = array(
'subscription_id' => null,
'name' => 'Monday Farms'
);
return $map[$arg];
}));
$enterprise->subscribe('basic');
Run Code Online (Sandbox Code Playgroud)
结果:
Subscription ID: NULL
Name: string(12) "Monday Farms"
Run Code Online (Sandbox Code Playgroud)
企业::订阅
public function subscribe() {
echo 'Subscription ID: ';
var_dump($this->field('subscription_id'));
echo 'Name: ';
var_dump($this->field('name'));
}
Run Code Online (Sandbox Code Playgroud)
为什么returnValueMap()不像我期望的那样工作?我到底错过了什么?