如何用PHPUnit存根替换PHP类?

时间:2016-04-18 12:04:07

标签: phpunit stub

这是我的函数等待phpunit的测试:

<?php
class Dog
{
    public function born()
    {
        $a = new Action();
        $rs = $a->talk();
        return $rs;
    }
}

类Action是:

class Action
{
    public function talk()
    {
        return "true";
    }
}

测试功能是:

public function testStub()
{
    $stub = $this->getMockBuilder('Action')
        ->getMock();
    $stub->method('talk')
        ->willReturn('false');
    var_dump($stub->talk()); // "false"

    $dog = new Dog();

    //[How can the born method invoke the stub method ?]
    var_dump($dog->born()); // "true" [I think it should be "false",but it isn't]
}

现在,我如何使用存根类来替换Action类?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

当前编写代码的方式不能用测试double替换Action。代码需要重构,以便您可以注入Action个实例。然后,您可以使用测试双精度而不是真正的Action实例。