Chcę użyć PHPUnit do sprawdzenia, czy metody są wywoływane w odpowiedniej kolejności.PHPUnit: jak sprawdzić, czy metody są wywoływane w nieprawidłowej kolejności?
Moja pierwsza próba, użycie ->at()
na fałszywym obiekcie, nie zadziałała. Na przykład, oczekuje się, że po niepowodzenie, ale to nie robi:
public function test_at_constraint()
{
$x = $this->getMock('FirstSecond', array('first', 'second'));
$x->expects($this->at(0))->method('first');
$x->expects($this->at(1))->method('second');
$x->second();
$x->first();
}
Jedynym sposobem mogę myśleć o tej wymuszonej awarii jeśli rzeczy były nazywane w niewłaściwej kolejności było coś takiego:
public function test_at_constraint_with_exception()
{
$x = $this->getMock('FirstSecond', array('first', 'second'));
$x->expects($this->at(0))->method('first');
$x->expects($this->at(1))->method('first')
->will($this->throwException(new Exception("called at wrong index")));
$x->expects($this->at(1))->method('second');
$x->expects($this->at(0))->method('second')
->will($this->throwException(new Exception("called at wrong index")));
$x->second();
$x->first();
}
Czy istnieje bardziej elegancki sposób na zrobienie tego? Dzięki!
Spójrz http://api.drupal.org/api/drupal/core%21vendor%21phpunit%21phpunit-mock-objects%21PHPUnit%21Framework%21MockObject%21Matcher%21InvokedAtIndex. php/function/PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex% 3A% 3Averify/8 – jcbwlkr
Myślę, że to pomoże, ale nie jestem pewien. – jcbwlkr
Ta strona wydaje się wskazywać, że '-> at()' nie spowoduje awarii, jeśli jej metoda zostanie wywołana przy innym indeksie, który mój pierwszy przypadek testowy już udowodnił. Czy było coś, co miałbyś na myśli z tej strony, która byłaby przydatna? – des4maisons