Я должен что-то упустить. Я пытаюсь заглушить методы для класса в PHPUnit, но когда я вызываю метод для фиктивного объекта, он говорит мне, что метод не определен.
Пример класса для заглушки:
namespace MyApp;
class MyStubClass
{
public function mrMethod()
{
// doing stuff
}
}
Чтобы заглушить это, я пишу:
// specifying all getMock() args to disable calling of class __construct()
$stub = $this->getMock('MyStubClass', array(), array(), 'MockMyStubClass', false, false, false);
$stub->expects($this->any())
->method('mrMethod')
->will($this->returnValue('doing stuff'));
Но при вызове метода-заглушки я получаю исключение:
$stub->mrMethod();
//PHP Fatal error: Call to undefined method MockMyStubClass::mrMethod()
Я использую PHPUnit 3.4.3 с PHP 5.3.0.
Еще одна небольшая вещь, которую я заметил, заключалась в том, что если указание пространства имен в методе getMock()
приводит к исключению загрузки класса из-за двойного пространства имен:
$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error: Class 'MyApp\MyApp\MyStubClass' not found
Это выглядит довольно странно (и getmock () не примет пространство имен с ведущей обратной косой чертой). Единственное, что я мог подумать, это может быть потому, что этот класс
зарегистрирован в автозагрузчике?
Есть мысли?