2011-01-11 2 views
0

У меня есть класс, который я хочу проверить. Вот код:Как мне заставить PHPUnit заменить класс в моем методе тестирования?

class MyClass 
{ 
    function functionToTest() { 

     $class = new Example(); 

} 

В PHPUnit, можно ли использовать Mocks/заглушек, чтобы заменить для примера класса?

В моем методе испытания:

class MyClassTest extends PHPUnit_Framework_TestCase { 

    function testFunctionTest() { 
     $testClass = new MyClass(); 
     $result = $testClass->functionTest(); 

    } 

} 

Таким образом, вместо того, чтобы использовать фактический класс «Example», может PHPUnit вмешаться здесь и использовать макет для представления «новый пример()»?

ответ

2

Лучшим решением было бы внедрить в Example экземпляр в functionToTest() метод:

function functionToTest(Example $class) 

Тогда вы будете в состоянии смеяться над его в ваших модульных тестов:

function testFunctionTest() { 
    $testClass = new MyClass(); 
    $class = $this->getMock('Example'); 
    $result = $testClass->functionTest($class); 

} 

Но если этот подход по какой-то причине не является для вас вариантом, попробуйте использовать функцию set_new_overload(), предоставляемую расширениями test_helpers. См. Дополнительную информацию в Sebastian Bergmann's blog.

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