Ich versuche, die unter Klasse zu testen PHPUnit mitPHPUnit verspottet Methode gibt null
class stripe extends paymentValidator {
public $apiKey;
public function __construct ($apiKey){
$this->apiKey = $apiKey;
}
public function charge($token) {
try {
return $this->requestStripe($token);
} catch(\Stripe\Error\Card $e) {
echo $e->getMessage();
return false;
}
}
public function requestStripe($token) {
// do something
}
}
Meine Testskripte wie unten:
class paymentvalidatorTest extends PHPUnit_Framework_TestCase
{
/**
* @test
*/
public function test_stripe() {
// Create a stub for the SomeClass class.
$stripe = $this->getMockBuilder(stripe::class)
->disableOriginalConstructor()
->setMethods(['requestStripe', 'charge'])
->getMock();
$stripe->expects($this->any())
->method('requestStripe')
->will($this->returnValue('Miaw'));
$sound = $stripe->charge('token');
$this->assertEquals('Miaw', $sound);
}
}
Mit meinem Testskript erwartete ich den Test Doppel der stripe :: charge() -Methode wird genauso ausgeführt wie in der ursprünglichen Klasse definiert und stripe :: requestStripe() gibt 'Miaw' zurück. Daher sollte $ stripe-> charge ('token') auch 'Miaw' zurückgeben. Wenn ich jedoch den Test ausführe, bekomme ich:
Failed asserting that null matches expected 'Miaw'.
Wie soll ich das beheben?
Sie haben die Methode 'charge' nicht eingerichtet, um irgendetwas zurückzugeben, daher wird 'null' zurückgegeben. – zerkms