Как использовать setExpectedException () PHPUnit? - PullRequest
4 голосов
/ 10 января 2011

С помощью PHPUnit я могу успешно проверить , если определенный вызов класса правильно вызывает исключение, подобное этому:

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");

Но я читаю здесь , что тамэто более простой способ , в основном в одну строку, используя setExpectedException():

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    public function testException()
    {
        $this->setExpectedException('InvalidArgumentException');
    }
}

Но как мне заставить его работать как в примере выше, то есть я хочу проверить, чтоКласс выдает это исключение только когда я делаю конкретный вызов с '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 () для замены моего рабочего примера выше?

1 Ответ

1 голос
/ 10 января 2011

Вы можете использовать Ожидаемая исключительная аннотация :

class ExceptionTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException InvalidArgumentException
     */
    public function testException()
    {
        $dummy = Import_Driver_Excel::get_file_type_from_file_name('BAD_NAME.nnn');

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...