如何嘲笑内部方法 Target.php

如何嘲笑内部方法 Target.php,php,unit-testing,phpunit,mockery,Php,Unit Testing,Phpunit,Mockery,您可以仅使用测试框架的方法模拟getData方法,并描述期望值 作为(工作)示例: 希望这些帮助您的目标班级有点困惑。EXP警告是目标类的真实类名吗?谁是他的$this->exp对象?为什么不呢?请解释清楚 <?php class Target { public function validate() { $this->getData(); return true; } public function getData

您可以仅使用测试框架的方法模拟
getData
方法,并描述期望值

作为(工作)示例:


希望这些帮助

您的目标班级有点困惑。EXP警告是目标类的真实类名吗?谁是他的$this->exp对象?为什么不呢?请解释清楚
<?php

class Target
{
    public function validate()
    {
        $this->getData();
        return true;
    }

    public function getData()
    {
        return array();
    }
}
<?php

class TargetTest extends PHPUnit_Framework_TestCase
{
    public function testValidate()
    {
        $mock = m::mock('Target');
        $mock->shouldReceive('getData')
            ->once();
        $expected = $this->exp->validate();

        $this->assertTrue($expected);
    }
}
use Mockery as m;

class TargetTest extends \PHPUnit_Framework_TestCase
{
    public function testValidate()
    {
        $mock = m::mock('Target[getData]');
        $mock->shouldReceive('getData')
            ->once();
        $expected = $mock->validate();

        $this->assertTrue($expected);
    }
}