slego
Новичок
Как тестировать код, который поднимает исключение
Есть класс-валидатор
Вооот. И как теперь такое можно оттестировать?
Для случая, когда проверка должна быть пройдена, вроде как без проблем:
А как теперь быть с той частью, где exception'ы поднимаются? Есть assertError(...). Попробовал - не то. Нужно что-то типа assertException(...), насколько я понимаю.
Или до версии simpletest 2.0 без шансов?
И еще по ходу, люди, намекните, пожалуйста, ДЛЯ ЧЕГО нужны mock-объекты, их смысл и философию. Если можно - на пальцах. Сколько читал, смотрел тесты, так и не понял
Есть класс-валидатор
PHP:
/**
* Validate for integer value
*
* @author Safronov Oleg ([email protected])
* @version 1.0.0
*/
class IntValidator extends Validator
{
/**
* @param int Value for checking
* @return bool true If validation is passed, otherwise
* the exception is thrown
* @throws <b>ValidatorException</b> If validation failes
*/
public function validate($val)
{
if (!is_int($val))
{
throw new ValidatorException(Message::get("err_invalid_int"));
}
return true;
}
};
try
{
$vld = new IntValidator();
$vld->validate("--");
}
catch(ValidatorException $ve)
{
$ve->getXMessage(); // trace: параметр должен быть целочисленным
}
Для случая, когда проверка должна быть пройдена, вроде как без проблем:
PHP:
class IntValidatorTest extends UnitTestCase
{
private $_vld = null;
public function setUp()
{
$this->_vld = new IntValidator();
}
public function testPass()
{
$val = 0;
$this->assertTrue($this->_vld->isValid($val));
$val = -1;
$this->assertTrue($this->_vld->isValid($val));
$val = 555;
$this->assertTrue($this->_vld->isValid($val));
}
}
//1/1 test cases complete: 3 passes, 0 fails and 0 exceptions.
Или до версии simpletest 2.0 без шансов?
И еще по ходу, люди, намекните, пожалуйста, ДЛЯ ЧЕГО нужны mock-объекты, их смысл и философию. Если можно - на пальцах. Сколько читал, смотрел тесты, так и не понял