Мне что-то не хватает. Я пытаюсь использовать методы stub в классе в PHPUnit, но когда я вызываю метод на объект mock, он сообщает мне, что метод не определен.PHPUnit: методы заглушки undefined
Пример класс заглушка:
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()
I используя PHPUnit 3.4.3 с PHP 5.3.0.
Еще одна маленькая вещь, которую я заметил, что если указать пространство имен в результатах getMock()
метода в исключения класса нагрузки из-за двойного пространства имен:
$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error: Class 'MyApp\MyApp\MyStubClass' not found
меня поражает, как довольно странно (и getmock() будет не допускайте пространство имен с ведущей обратной косой чертой). Единственное, что я мог подумать, это может быть связано с тем, что этот класс зарегистрирован на автозагрузчике?
Любые мысли?
Очень полезный - понятия не имел (по-видимому, немного наивный из меня), что первоначальный класс необходимо было получить, чтобы его высмеять. –
«Использовать полностью квалифицированное пространство имен минус первая обратная косая черта». - Это то, что меня достало :) – Nick
этот ответ очень полезен! Я использовал phpunit 4.8.16, php 5.3. И ниже работает. '$ stub_obj = $ this-> getMockBuilder ('MyApp \ Controller \ Convert \ MyClass') -> getMock();' – wafe