1

是否可以模拟

EntityRepository::findOneBy{$field}($value)

功能?

使用:

->getMock('EntityRepository')
->expects($this->any())
->method('findOneByField') 

始终解析为 null,因为findOneByField它不是真正的函数,而是由__call(). 至少我认为这是问题所在..

4

1 回答 1

1

您可以模拟该__call方法。举个简单的例子:

班级:

class A { 

    public function __call($fname, $args) {
        if($fname === 'test') {
            return 'test';
        }   
    }   
}

测试:

class ATest extends PHPUnit_Framework_TestCase
{

    public function testA() {:
        $mock = $this->getMock('A');

        $mock->expects($this->any())
            ->method('__call')
            ->with('test')
            ->will($this->returnValue('test'));

        var_dump($mock->test());
    }   
}

您可以对EntityRepository. 我只是没有一个手来测试。

于 2013-09-17T20:52:27.960 回答