Me falta algo. Intento guardar métodos en una clase en PHPUnit, pero cuando invoco el método en el objeto simulado, me dice que el método no está definido.PHPUnit: métodos de código auxiliar undefined
Ejemplo de clase de código auxiliar:
namespace MyApp;
class MyStubClass
{
public function mrMethod()
{
// doing stuff
}
}
Para stub, lo escribo:
// 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'));
Pero al invocar el método apagó, me sale una excepción:
$stub->mrMethod();
//PHP Fatal error: Call to undefined method MockMyStubClass::mrMethod()
I Estoy usando PHPUnit 3.4.3 con PHP 5.3.0.
Otra pequeña cosa que noté fue que si la especificación de un espacio de nombres en los getMock()
método da como resultado una excepción de carga de clases a causa de un doble espacio de nombres:
$stub = $this->getMock('MyApp\MyStubClass');
// Fatal error: Class 'MyApp\MyApp\MyStubClass' not found
Eso me parece bastante extraño (y getmock() lo hará no acepta un espacio de nombre con una barra diagonal inversa principal). Lo único que podría pensar que podría causar eso podría ser porque esta clase es registrada con un autocargador?
¿Alguna idea?
Muy útil - no tenía ni idea (al parecer, un poco ingenuo de mí) de que se necesitaba acceder a la clase original para burlarse de ella. –
"Usar el espacio de nombres totalmente calificado menos la primera barra invertida". - Esto es lo que me consiguió :) – Nick
¡esta respuesta es muy útil! Utilicé phpunit 4.8.16, php 5.3. Y abajo está trabajado. '$ stub_obj = $ this-> getMockBuilder ('MyApp \ Controller \ Convert \ MyClass') -> getMock();' – wafe