有时在我的代码中,我会检查特定对象是否实现了接口:
if ($instance instanceof Interface) {};
然而,在PHPUnit中创建所述接口的模拟,我似乎无法通过该测试。
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
我知道有一个名为Interface的类与实现Interface的类不同,但我不知道如何处理它。
我是否被迫嘲笑实现Interface的具体类?难道这不会破坏使用接口实现可移植性的目的吗?
由于
答案 0 :(得分:47)
从3.5.0开始也有assertInstanceOf
示例:
$this->assertInstanceOf('\Models\User', $this->userService->findById(1));
答案 1 :(得分:39)
这对我有用:
$mock = $this->getMock('TestInterface');
$this->assertTrue($mock instanceof TestInterface);
也许这是一个拼写错误,或者$ instance不是你认为的那样?
答案 2 :(得分:1)
使用PhpUnit函数assertInstanceOf。
示例:
$this->assertInstanceOf(ResponseInterface::class, $signInResponse);