Могу ли я высмеять реализацию интерфейса с помощью PHPUnit?

У меня есть интерфейс, который я хотел бы высмеять. Я знаю, что могу издеваться над реализацией этого интерфейса, но есть ли способ издеваться над интерфейсом?

<?php require __DIR__ . '/../vendor/autoload.php'; use My\Http\IClient as IHttpClient; // The interface use My\SomethingElse\Client as SomethingElseClient; class SomethingElseClientTest extends PHPUnit_Framework_TestCase { public function testPost() { $url = 'some_url'; $http_client = $this->getMockBuilder('Cpm\Http\IClient'); $something_else = new SomethingElseClient($http_client, $url); } } 

Я получаю здесь:

 1) SomethingElseTest::testPost Argument 1 passed to Cpm\SomethingElse\Client::__construct() must be an instance of My\Http\IClient, instance of PHPUnit_Framework_MockObject_MockBuilder given, called in $PATH_TO_PHP_TEST_FILE on line $NUMBER and defined 

Интересно, что PHPUnit, издевавшиеся интерфейсы и instanceof предполагают, что это может сработать.

Вместо

 http_client = $this->getMockBuilder('Cpm\Http\IClient'); 

использование

 http_client = $this->getMock('Cpm\Http\IClient'); 

или

 http_client = $this->getMockBuilder('Cpm\Http\IClient')->getMock(); 

Полностью работает!

Для меня работает следующее:

 $myMockObj = $this->createMock(MyInterface::class);