PHPUnit. Mock-объекты. Заглушка для метода другого класса?

Ситуация:
Yii проект, PHPUnit тесты.

Модель:
class Class1 {
 static function func1(){
  if(Class2::funcOfClass2)
        .....
 }
....
}

Тест:
class Class1Test extends PHPUnit_Framework_TestCase {
  public function testFunc1(){
    $this->assertEquals(Class1::func1());
 }

Можно ли сделать заглушку для Class2::funcOfClass2 (чтобы вместо нее при вызове testFunc1 возвращалось true)?

P.S. Пробовал
$mock = $this->getMock('Class1', array('Class2::funcOfClass2'));
$mock->expects($this->once()->method('Class2::funcOfClass2')->will($this->returnValue(true)));

но так не получилось. Не знаю правильно ли это...
  • Вопрос задан
  • 3792 просмотра
Пригласить эксперта
Ответы на вопрос 1
fornit1917
@fornit1917
Можно к Class2 не явно обращаться, а через DI (Yii::app()->class2->funcOfClass2()). Тогда в конфиге для тестов в качестве компонента Class2 достаточно будет другой класс указать и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы