Тестирование protected и private методов с PHPUnit

Через reflection (требуется php > 5.3.2):

<?php
class FooTest extends PHPUnit_Framework_TestCase
{
    /**
     * @covers Foo::doSomethingPrivate
     */
    public function testPrivateMethod()
    {
        $method = new ReflectionMethod(
          'Foo', 'doSomethingPrivate'
        );
 
        $method->setAccessible(true);
 
        $this->assertEquals(
          'blah', $method->invoke(new Foo)
        );
    }
}
?>

Ссылка на статью — http://sebastian-bergmann.de/archives/881-Testing-Your-Privates.html.
Здесь предлагают сделать универсальный метод в PHPUnit для того, чтобы упростить эту процедуру — http://stackoverflow.com/a/2798203/801426.

LEAVE A COMMENT