Ho un'interfaccia che mi piacerebbe prendere in giro. So che posso prendere in giro un'implementazione di questa interfaccia, ma c'è un modo per deridere l'interfaccia?Posso prendere in giro un'implementazione dell'interfaccia con 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);
}
}
Quello che ottengo qui è:
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
È interessante notare che, PHPUnit, mocked interfaces, and instanceof suggerirebbe questo potrebbe funzionare.
Hai riconosciuto male che altra questione che usa '-> getMock()' non '-> getMockBuilder()' come si fa - e che è, come si trovato la risposta al tuo problema pure. Tuttavia IIRC esiste anche un duplicato della tua domanda, ma non riesco a trovarlo adesso. – hakre
Interessante. Non riuscivo a trovarlo nella mia ricerca. Grazie per la modifica. –
puoi anche accettare la tua risposta di seguito in modo che la tua domanda sia contrassegnata come risposta. – hakre