2011-02-08 2 views
0

PhpUnit :: Как можно проверить __конструкцию с проверенными защищенными переменными?PHPUnit :: Как можно проверить __конструкцию с проверенными защищенными переменными?

(не всегда следует добавить публичный метод GETVAL() - Су без метода добавления, которые возвращают защищаемого значение переменной)

Пример:

class Example{ 
    protected $_val=null; 
    function __construct($val){ 
     $this->_val=md5 ($val); 
    } 
    } 

Edit:

также существует проблема проверки в функции, которая возвращает void


Edit2:

Пример почему мы должны тест __construct:

class Example{ 
     protected $_val=null; 
     //user write _constract instead __construct 
     function _constract($val){ 
      $this->_val=md5 ($val); 
     } 

     function getLen($value){ 
     return strlen($value); 
     } 
} 

class ExampleTest extends PHPUnit_Framework_TestCase{ 
    test_getLen(){ 
     $ob=new Example();//call to __construct and not to _constract 
     $this->assertEquals($ob->getLen('1234'), 4); 
    } 
} 

испытательный пробег ок, но пример класса "конструктор" не был создан!

Благодаря

ответ

5

Основная цель модульного тестирования - проверить интерфейс По умолчанию вы должны тестировать только общедоступные методы и их поведение. Если все в порядке, то ваш класс подходит для внешнего использования. Но иногда вам нужно протестировать защищенных/закрытых членов - тогда вы можете использовать Reflection и setAccessible() method

+0

1. также защищенный метод должен был протестировать 2 .__ construct - общедоступный метод – Yosef

+0

[тот же метод для ReflectionMethod] (http://php.net/manual/en/reflectionmethod.setaccessible.php) – Distdev

+0

Также вы можете прочитать [статья автора из PHPUnit] (http://sebastian-bergmann.de/archives/881-Testing-Your-Privates.html) – Distdev

0

Создать производный класс, который выставляет значение, которое вы хотите проверить.

+0

Этот параметр должен существовать в phpunit, если это не нужно добавлять. – Yosef

Смежные вопросы