2009-09-02 18 views
10

¿Qué estrategias han utilizado las personas de Perl al burlarse de los objetos de Moose que inyectarán en otros objetos de Moose como atributos de tipo restringido?¿Cómo puedo simular objetos de Moose?

Test::MockObject::Extends parece que no funciona bien con Moose. Sin embargo, necesito que el objeto sea bendecido como un paquete específico, por lo que un vainilla Test :: MockObject no funcionará. Estoy seguro de que otras personas han tenido una dificultad similar. ¿Cómo lo resolvió?

Puntos extra para las soluciones que ya están en CPAN.

+0

No estoy seguro de cuál es la política de responder su propia pregunta, pero encontré Test::Mock::Class en CPAN, que funciona bastante bien. Así que lo estoy publicando aquí en los comentarios. –

+0

hrmmm whoops: Test :: Mock :: Class http://search.cpan.org/~dexter/Test-Mock-Class-0.03/lib/Test/Mock/Class.pm –

+2

"Llamas * a * un ¿Es ridículo? Mi abuela podría ser un mejor objeto que eso. ¡Nunca conseguirás nada, Moose! :-P –

Respuesta

5

Bueno, yo no soy el experto en esas cosas, pero lo primero que vería es Shaw Moore (Sartak) Test-MockOO.

Si esto no funciona para usted, entonces consideraría usar la potencia del protocolo Metaobject y starrt construyendo manualmente objetos simulados. Mire Class :: MOP :: Class y Moose :: Meta :: Class para saber cómo anular métodos específicos y/o crear clases enteras en tiempo de ejecución programáticamente.

Si esto todavía no funciona para usted, pasaría el IRC y preguntaría. Los bateadores heve heose pasan el rato allí y estoy seguro de que uno de ellos se ha encontrado con esta situación.

+3

Si ese Módulo ya estaba en CPAN, le daría la marca de verificación. Parece que haría el trabajo. –

1

poco de un autoenchufe, pero escribí http://search.cpan.org/~cycles/Test-Magpie-0.05/lib/Test/Magpie.pm, tal vez le resulte útil. Un simulacro creado con esto actúa como cualquier clase, y cumple todas las funciones posibles. No se burla de ningún objeto o clase en absoluto. Lamentablemente, la búsqueda de CPAN es un poco basura, por lo que buscar "prueba de simulacro" no lo muestra en los resultados.

También debería mencionar que la documentación no contiene una gran cantidad de motivación o código de ejemplo, por lo que es posible que desee comprobar algunas de las pruebas:

Cuestiones relacionadas