Ich bin ein Rails-Programmierer, der PHP und PHPUnit erforscht. Ich habe ein bisschen mit dem Wechsel von RSpec zu PHPUnit gekämpft.`expect_any_instance_of` entspricht für PHPUnit
Genauer gesagt hat RSpec eine wirklich nette Stub-Methode namens expect_any_instance_of
, die es ermöglicht, jede Instanz einer Klasse zu stubben.
Ich habe Mühe, das Äquivalent in PHPUnit zu finden.
Hier ist mein Szenario in Code:
<?php
use PHPUnit\Framework\TestCase;
class SomeClass
{
public function testMethod()
{
$api_interface = new RemoteAPIClassObject();
$result = $api_interface->makeCall()
$this->assertEquals('foo', $result->api_response);
}
}
?>
Ich mag würde die Methode makeCall
Stub, die Teil der RemoteAPIClassObject
Instanz ist. Gibt es eine Möglichkeit, dies in PHPUnit zu tun, so dass ich nicht wirklich einen Remote-API-Aufruf an den Remote-Server machen muss, wenn ich meine Testsuite laufe?
Ich habe über PHPUnit test doubles and class mocks gelesen, aber es scheint, als ob alle PHPUnit Stub/Mock-Methoden eine Stub-Instanz zurückgeben, was ich nicht will, da die Methode, die ich versuche auszugeben, weiter unten im Call-Stack ist.
In rspec würde ich benutzen Sie einfach die Methode, die ich bereits erwähnt, den Anruf Stummel:
expect_any_instance_of(RemoteAPIClassObject).to receive(:makeCall).and_return(some_stubbed_object)
Vielleicht ist meine Strategie weg ist und ich brauche, um meine Prüfung zu überdenken?
Hallo! Willkommen in der PHP-Welt. Ich habe in der Vergangenheit "Mocker" verwendet (PHPUnit ist nicht so ausdrucksstark). Für das Mocking von http-Aufrufen ist 'php-vcr' ein nettes Projekt. – fedeisas