PHPUnit: Stub-Methoden undefiniert

Ich muss etwas vermissen. Ich versuche, Methoden für eine Klasse in PHPUnit zu entfernen, aber wenn ich die Methode für das Scheinobjekt aufrufe, wird mir mitgeteilt, dass die Methode undefiniert ist.

Beispiel zu stubende Klasse:

namespace MyApp;

class MyStubClass 
{
   public function mrMethod()
   {
     // doing stuff
   }   
}

Um es kurz zu machen, schreibe ich:

// 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'));

Beim Aufrufen der Stubbed-Methode erhalte ich jedoch eine Ausnahme:

$stub->mrMethod();
//PHP Fatal error:  Call to undefined method MockMyStubClass::mrMethod()

Ich benutze PHPUnit 3.4.3 mit PHP 5.3.0.

Eine andere kleine Sache, die mir aufgefallen ist, war, dass bei der Angabe eines Namensraums imgetMock() Methode führt aufgrund eines doppelten Namespace zu einer Klassenlade-Ausnahme:

$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error:  Class 'MyApp\MyApp\MyStubClass' not found

Das kommt mir ziemlich merkwürdig vor (und getmock () akzeptiert keinen Namespace mit einem führenden Backslash). Das einzige, woran ich denken könnte, könnte sein, dass diese Klasse bei einem Autoloader registriert ist?

Irgendwelche Gedanken?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage