PHPUnit错误调用mock上的未定义方法

时间:2016-01-15 21:36:30

标签: php unit-testing mocking phpunit

我收到错误:当我在Simple类mock上调用mymethod()时,调用未定义的方法Mock_SimpleInterface_8a93e777 :: mymethod()。

class PlaygroundTest extends \PHPUnit_Framework_TestCase 
{
    public function testMock()
    {
        $class     = $this->getMockBuilder('\Playground\Simple')->getMock();

        $class->mymethod();
    }
}

Simple类实现

namespace Playground;

class Simple
{

    public function mymethod()
    {
        print "Hey!";
    }
}

根据PHPUnit文档(https://phpunit.de/manual/5.1/en/test-doubles.html),它声明“默认情况下,原始类的所有方法都被一个只返回null的虚拟实现替换(不调用原始方法)。”

我不应该能够调用mymethod()并获得null返回值吗?我想避免指定所有类方法。 PHPUnit应该足够聪明,知道可以在mock上调用哪些方法。

这是一个错误吗?我正在使用PHPUnit 5.1.4

1 个答案:

答案 0 :(得分:3)

您的假设是正确的,因此您在其他地方出现错误或未显示真实代码。

模拟类名称Mock_SimpleInterface_8a93e777表明您实际上并未模仿\Playground\Simple,而是\Playground\SimpleInterface,其中可能不包含mymethod()