Я хочу использовать PHPUnit для проверки того, что методы вызывают в правильном порядке.PHPUnit: как проверить, что методы вызываются в неправильном порядке?
Моя первая попытка, используя ->at()
на макет предмета, не работает. Например, я ожидал следующий потерпеть неудачу, но это не делает:
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();
}
Единственный способ, которым я мог думать, что принудительный отказ, если дела были вызваны в неправильном порядке было что-то вроде этого:
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();
}
Есть ли более элегантный способ сделать это? Благодаря!
Посмотрите на 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
Я думаю, что это поможет, но я не уверен. – jcbwlkr
Эта страница, по-видимому, указывает, что '-> at()' не вызовет сбой, если его метод вызывается с другим индексом, который уже доказал мой первый тестовый пример. Было ли что-то еще, что вы имели в виду на этой странице, которое было бы полезно? – des4maisons