С PHPUnit я могу успешно протестировать если конкретный вызов к классу правильно бросает исключение, как это:Как использовать PHPUnit setExpectedException()?
try
{
$dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');
}
catch (Exception $ex)
{
return;
}
$this->fail("Import_Driver_Excel::get_file_type_from_file_name() does not properly throw an exception");
Но я читал here, что есть простой способ, в основном в одной строке с помощью setExpectedException()
:
class ExceptionTest extends PHPUnit_Framework_TestCase
{
public function testException()
{
$this->setExpectedException('InvalidArgumentException');
}
}
Но как мне заставить его работать, как в приведенном выше примере, то есть я хочу, чтобы проверить, что класс выдает это исключение только тогда, когда я м ake конкретный вызов с 'BAD_NAME.nnn'? Эти варианты не работают:
$dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');
$this->setExpectedException('Exception');
, ни это:
$this->setExpectedException('Exception');
$dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');
Как использовать setExpectedException(), чтобы заменить мой рабочий пример выше?
Ваш второй пример является правильным. Можете ли вы указать, что не работает. – Gordon
'$ this-> setExpectedException ('Исключение'); throw new Exception(); '- что делать, если вы выполняете этот код? – zerkms
Это действительно работает, как во втором примере, спасибо. –