So testen Sie einen zweiten Parameter in einem PHPUnit-Mock-Objekt


68

Das habe ich:

$observer = $this->getMock('SomeObserverClass', array('method'));
$observer->expects($this->once())
         ->method('method')
         ->with($this->equalTo($arg1));

Die Methode sollte jedoch zwei Parameter annehmen. Ich teste nur, ob der erste Parameter korrekt übergeben wird (als $ arg1).

Wie teste ich den zweiten Parameter?

Antworten:


106

Ich glaube, der Weg dazu ist:

$observer->expects($this->once())
     ->method('method')
     ->with($this->equalTo($arg1),$this->equalTo($arg2));

Oder

$observer->expects($this->once())
     ->method('method')
     ->with($arg1, $arg2);

Wenn Sie für das 2. Argument eine andere Art von Behauptung ausführen müssen, können Sie dies auch tun:

$observer->expects($this->once())
     ->method('method')
     ->with($this->equalTo($arg1),$this->stringContains('some_string'));

Wenn Sie sicherstellen müssen, dass ein Argument mehrere Zusicherungen besteht, verwenden Sie staticAnd ().

$observer->expects($this->once())
     ->method('method')
     ->with($this->logicalAnd($this->stringContains('a'), $this->stringContains('b')));

1
Ich bin vor ein paar Wochen darauf gestoßen. Verwenden von: -> mit ($ this-> gleichTo ($ foo, $ bar) Arbeitete für mich.
dh

8
@ieure Das zweite Argument für equalTo () ist $ delta, sodass das wahrscheinlich nicht das tut, was Sie denken.
Nate Bundy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.