Ich versuche, PHPUnit returnValueMap() zu verwenden, um die Ergebnisse eines Lesevorgangs auszugeben. Es liefert nicht die erwarteten Ergebnisse, aber eine äquivalente returnCallback() tut. Ich habe meine test case zur Verfügung gestellt, wenn Sie es selbst überprüfen möchten.PHPUnit returnValueMap liefert keine erwarteten Ergebnisse
returnValueMap()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnValueMap(array(
array('subscription_id', null),
array('name', 'Monday Farms')
)));
$enterprise->subscribe('basic');
Ergebnisse:
Subscription ID: NULL
Name: NULL
returnCallback()
$enterprise = $this->getMock('Enterprise', array('field'));
$enterprise->expects($this->any())
->method('field')
->will($this->returnCallback(function ($arg) {
$map = array(
'subscription_id' => null,
'name' => 'Monday Farms'
);
return $map[$arg];
}));
$enterprise->subscribe('basic');
Ergebnisse:
Subscription ID: NULL
Name: string(12) "Monday Farms"
Unternehmen :: abonnieren
public function subscribe() {
echo 'Subscription ID: ';
var_dump($this->field('subscription_id'));
echo 'Name: ';
var_dump($this->field('name'));
}
Warum returnValueMap nicht() arbeiten, wie ich es zu erwarten? Was genau vermisse ich?
Sie haben meinen Tag gerettet! Vielen Dank! – haltabush
Sie haben mich gerade gerettet ** eine Menge Kopfschmerzen. Vielen Dank. PS: Schade, dass viele Eigenarten von PHPUnit nicht in der offiziellen Dokumentation enthalten sind .... –
Lebensretter! Es gibt auch Fälle, in denen der Nullwert "falsch" sein muss, insbesondere wenn "$ param" (der Schlüssel) eine ganze Zahl ist – esh