2009-08-11 13 views
7

Mi búsqueda de comenzar a usar espacios de nombres en PHP continúa. Esta vez PHPUnit me da problemas. Mi método de configuración() es la siguiente:PHPUnit getMock() con espacio de nombres

$test = new \MyNamespace\NonPersistentStorage(); // works 
$mock = $this->getMock('\\MyNamespace\\NonPersistentStorage'); // doesn't work 

El método getMock() sólo se traduce en PHP en busca de una clase NonPersistentStorage. No dentro del espacio de nombres.

P: ¿Qué debo cambiar para que el método getMock() busque la clase en el espacio de nombres?

Editar: La doble barra diagonal inversa no es el problema. Ver también: the manual: (cita)

'Dentro de una secuencia de una sola cita, la secuencia de escape de la barra invertida es mucho más segura, pero es una práctica recomendada escapar de las barras diagonales inversas en todas las cadenas como una práctica recomendada.'

edición: Lo que funcionó para mí es en los comentarios de la respuesta de Ignacio R.

Respuesta

2

referencias a clases de Cuerda en general no tienen la barra invertida inicial. Intente eliminarlo y díganos si funciona.

EDIT: y si no lo hace, pruebe class_alias para crear un alias en el espacio de nombres global para esa clase. Sin embargo, esa sería una solución fea ...

+0

intentado, pero no funciona. – koen

+0

Bueno, por "barra diagonal inversa" me refería a ambas barras diagonales inversas, pero espero que lo hayan entendido de todos modos. –

+0

Vaya, lo siento. Sin embargo, tampoco funciona. – koen

-2

Creo que puede resolver su problema incluyendo la clase \ MyNamespace \ NonPersistentStorage en su archivo de prueba.

+3

Creo que te estás perdiendo el punto de burlarse de las clases. –

2

uso esta cadena en lugar (sin las dobles barras invertidas):

$mock = $this->getMock('\MyNamespace\NonPersistentStorage'); 
Cuestiones relacionadas