小编beT*_*iba的帖子

PHPUnit:模拟__get()导致"__ get()必须正好接受1个参数......"

我在模拟重载的__get($ index)方法时遇到了问题.要模拟的类的代码和使用它的被测系统如下:

<?php
class ToBeMocked
{
    protected $vars = array();

    public function __get($index)
    {
        if (isset($this->vars[$index])) {
            return $this->vars[$index];
        } else {
            return NULL;
        }
    }
}

class SUTclass
{
    protected $mocky;

    public function __construct(ToBeMocked $mocky)
    {
        $this->mocky = $mocky;
    }

    public function getSnack()
    {
        return $this->mocky->snack;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试看起来如下:

<?php    
class GetSnackTest extends PHPUnit_Framework_TestCase
{
    protected $stub;
    protected $sut;

    public function setUp()
    {
       $mock = $this->getMockBuilder('ToBeMocked')
                     ->setMethods(array('__get')
                     ->getMock();

       $sut = new SUTclass($mock);
    }

    /**
     * @test
     */
    public function …
Run Code Online (Sandbox Code Playgroud)

php phpunit overloading built-in

12
推荐指数
1
解决办法
3455
查看次数

标签 统计

built-in ×1

overloading ×1

php ×1

phpunit ×1