У меня есть простой пример модульного теста (подробный вопрос здесь ) для класса конфигурации, который по своей конструкции вызывает ошибки PHP при несовпадении типов и неопределенных настройках конфигурации. В дополнение к ошибке метод завершается, возвращая false
.
В моем тестовом примере я хочу провести несколько тестов, которые не пройдены. Проблема в том, что я не могу выполнить простое «утверждение» возвращаемого значения: каждая ошибка, возникшая во время выполнения теста, будет преобразована в исключение PHPUnit_Framework_Error
.
Теперь я могу сообщить PHPUnit, что я ожидаю ошибку:
/**
* @expectedException PHPUnit_Framework_Error
*/
public function testSetInvalidKey()
{
$this->assertEquals(true, conf::set("invalid_key", "12345"));
}
Это прекрасно работает, но я не понимаю, что любое дополнительное утверждение в этой функции будет , а не . Вне зависимости от того, произойдет ли это или нет, PHPUnit, похоже, только ждет, пока произойдет исключение, и будет удовлетворен всей функцией, когда это произошло.
Этот тест будет работать нормально:
/**
* @expectedException PHPUnit_Framework_Error
*/
public function testSetInvalidKey()
{
// The error will be triggered here
$this->assertEquals(true, conf::set("invalid_key", "12345"));
$this->assertEquals(12345, 67810); // Huh?
$this->assertEquals("abc", "def"); // Huh?
$this->assertEquals(true, false); // Huh?
}
Почему? Это предполагаемое поведение?
Я понимаю, что вы просто разделите утверждения на разные функции, но я хотел бы понять поведение.