相关疑难解决方法(0)

PHPUnit的returnValueMap没有产生预期的结果

我正在尝试使用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()不像我期望的那样工作?我到底错过了什么?

php phpunit cakephp

38
推荐指数
2
解决办法
1万
查看次数

标签 统计

cakephp ×1

php ×1

phpunit ×1