1

を嘲笑することは可能ですか?

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

関数?

使用:

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

findOneByField実際の関数ではなく、によってマップされるため、常に null で解決され__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 に答える