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?

Joel
quelle

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')));
silfreed
quelle
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