Тестируем приватные методы PHP
Иногда возникают моменты когда нам нужно протестировать приватный или защищенный метод. Это может быть связанно с тем что этот метод может хранить в себе сложную бизнес логику, соответственно он должен быть покрыт тестом.
Reflection идет на помощь
Вам понадобиться PHP5 (>= 5.3.2) что бы воспользоваться возможностями Reflection. Суть метода заключается в том что бы сделать тестируемый метод публичным. Для этого нам поможет ReflectionMethod::setAccessible и ReflectionMethod::invoke.
Первый метод ReflectionMethod::setAccessible делает метод публичным и второй метод ReflectionMethod::invoke вызывает метод.
Пример теста для приватного метода:
Если возникнут вопросы задавайте их в комментариях.
Reflection идет на помощь
Вам понадобиться PHP5 (>= 5.3.2) что бы воспользоваться возможностями Reflection. Суть метода заключается в том что бы сделать тестируемый метод публичным. Для этого нам поможет ReflectionMethod::setAccessible и ReflectionMethod::invoke.
Первый метод ReflectionMethod::setAccessible делает метод публичным и второй метод ReflectionMethod::invoke вызывает метод.
Пример теста для приватного метода:
protected static function getMethod($name) {
// Создаем объект ReflectionClass
$class = new ReflectionClass('MyClass');
// Получаем из него ReflectionMethod по имени метода
$method = $class->getMethod($name);
// Делаем метод публичным
$method->setAccessible(true);
return $method;
}
public function testFoo() {
$foo = self::getMethod('foo');
$obj = new MyClass();
// Вызываем метод invoke для вызова тестируемого метода
$foo->invoke($obj);
}
Если возникнут вопросы задавайте их в комментариях.
Комментарии
Отправить комментарий