2015-07-26 9 views
26

Ich habe dieses Array von Objekten:Test, wenn Array enthält Wert mit PHPUnit

$ad_1 = new AdUnit(array('id' => '1', 'name' => 'Ad_1', 'description' => 'great ad', 'code' => 'alpha', 'widget_id' => '123')); 
$ad_2 = new AdUnit(array('id' => '2', 'name' => 'Ad_2', 'description' => 'good ad', 'code' => 'delta', 'widget_id' => '456')); 
$ad_3 = new AdUnit(array('id' => '3', 'name' => 'Ad_3', 'description' => 'bad ad', 'code' => 'sigma', 'widget_id' => '789')); 
$adUnitArr = array($ad_1, $ad_2, $ad_3); 

und ich möchte, um zu überprüfen, dass eine zufällige Anzeige i aus einer Funktion bekam im Array vorhanden ist. der Code die Anzeige zu erhalten wie folgt aussieht:

 $fixture = new AdGroup(); 
$fixture->setAds($adUnitArr); 
$randad = $fixture->getRandomAd(); 

jetzt i überprüfen möchten, ob das Array die zufällige Anzeige enthält i empfangen, was ich in der Lage war, wie dies zu tun:

$this->assertEquals(in_array($randad, $adUnitArr), 1); //check if ad in array 

aber mein Frage ist, gibt es eine Behauptung oder eine andere Möglichkeit, dieses Ding besser zu überprüfen als die Art, wie ich es getan habe? Ich habe versucht, assertArrayHasKey mit, aber ich habe den folgenden Fehler:

PHPUnit_Framework_Exception: Argument #1 (No Value) of PHPUnit_Framework_Assert::assertArrayHasKey() must be a integer or string 

eine Idee bitte? thx

+1

'$ this-> assertEquals ((int) in_array ($ Randad, $ adUnitArr), 1); // Prüfe ob die Anzeige im Array ist –

+0

'$ this-> assertTrue (in_array ($ randad, $ adUnitArr));' – vivoconunxino

Antwort

48

Versuchen Sie, die assertContains Methode:

$this->assertContains($randad, $adUnitArr); 
+3

Vorsicht vor 'bool'. '$ this-> assertContains ('foo', ['abc' => wahr]);' wird wahr sein. – GeekMagus

Verwandte Themen