ZF2& Doctrine2:mock EntityRepository :: findOneByField

时间:2013-09-17 20:35:15

标签: unit-testing doctrine-orm zend-framework2 phpunit

是否可以模拟

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

功能?

使用:

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

始终以null结算,因为findOneByField不是真正的函数,而是由__call()映射。至少我认为这就是问题..

1 个答案:

答案 0 :(得分: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执行相同的操作。我手边没有一个人可以进行测试。