我一直在阅读phpunit手册的测试双打部分,以确定是否可以从界面创建存根。 我需要伪造一个实现接口的对象的方法调用,但我不想为此创建一个假类。 它是一种创建实现接口的对象实例而不实际具有此类对象的类定义的方法吗?
以下代码无效但可能有助于了解我要实现的目标, 在此先感谢你们
/**
* @test
* @expectedException InvalidArgumentException
*/
public function searchAlbumThrowExceptionWhenDataBaseConnectionFailed(){
$albumRepositoryStub = $this->getMock('AlbumFinder\Repository\AlbumRepositoryInterface');
$albumRepositoryStub->method('fetchPage')
->will( $this->throwException(new \Exception()));
//code
}
答案 0 :(得分:0)
为此,您需要自动加载界面。通过调用:
来检查$this->assertTrue(interface_exists('AlbumFinder\Repository\AlbumRepositoryInterface'));
刚刚开始测试。
如果接口加载,请检查方法名称是否正确。除此之外,它应该工作......
答案 1 :(得分:0)
我发现我的代码存在问题。在模拟接口方法时,我错过了'expected'方法调用。这是现在为我工作的代码: $ albumRepositoryStub = $ this-> getMock('AlbumFinder \ Repository \ AlbumRepositoryInterface');
$albumRepositoryStub->expects($this->any())
->method('fetchPage')
->will( $this->throwException(new \Exception()));