Ich habe eine Schnittstelle, die ich gerne verspotten würde. Ich weiß, dass ich eine Implementierung dieser Schnittstelle verspotten kann, aber gibt es eine Möglichkeit, die Schnittstelle nur zu verspotten?Kann ich eine Schnittstellenimplementierung mit PHPUnit mokieren?
<?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);
}
}
Was bekomme ich hier:
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
Interessanterweise PHPUnit, mocked interfaces, and instanceof würde vorschlagen, dies funktionieren könnte.
Sie, dass andere Frage falsch verstanden haben, wird mit '-> getMock()' nicht '-> getMockBuilder()', wie Sie tun - und das ist, wie Sie fand die Antwort auf Ihr Problem auch. Allerdings gibt es auch ein Duplikat Ihrer Frage IIRC, aber ich kann es jetzt nicht finden. – hakre
Interessant. Ich konnte es bei meiner Suche nicht finden. Danke für die Bearbeitung. –
Sie können Ihre Antwort auch unten akzeptieren, damit Ihre Frage als beantwortet markiert wird. – hakre