2011-05-19 9 views
6

estoy curioso en cuanto a cómo los demás se acercan a esto. Escribir una prueba no es tan malo, pero burlarme un poco y cortar mi flujo. ¿Está bien que uno tenga un directorio 'fixtures' y diga mock_db.php, por ejemplo, con esa declaración falsa en particular?PHPUnit - reutilización de objetos simulados para múltiples conjuntos de pruebas

Yendo un paso más allá, sería mala práctica exigir que estos se burla abstraídos en una función?

Es decir:

// function to include a db mock 
    include_once 'test/fixtures/dbmock.php'; 

    $mockMYSQL = $dbmock('mysql', 'db1'); 
    $mockMSSQL = $dbmock('mssql', 'db2'); 

interesados ​​sólo para saber cómo otros probadores experimentados manejan esto. Estoy escribiendo guiones para sincronizar 2 bases de datos, por lo que este ejemplo puede ser muy relevante.

+0

No proveedores de datos que ayudan? – zerkms

+0

¿Estás hablando de PHPUnit objetos simulados creados usando '$ this-> getMock ('')' o se trata de burla por encargo por escrito? Usar accesorios para crear objetos de soporte de prueba es perfectamente válido y recomendado. –

+0

@David Me gustaría tener burlas reutilizables para diferentes suites de prueba. Bastante verde todavía con este negocio burlón, y sin idea de cómo implementar esto. – stefgosselin

Respuesta

3

me gustaría ir ya sea con la herencia - tener los objetos simulados comunes creadas y regresó en métodos Get protegidas * en clase de casos de prueba padre común.

O puede crear más limpio y de clase independiente que le instancia en sus bancos de pruebas y dejar que crear sus objetos simulados. Preferiría esto, pero tiene una desventaja: probablemente no pueda o no deba usar el método PHPUnit_Framework_TestCase getMock(). Te recomiendo que veas este método y trates de usar su lógica en tu clase independiente.

Incluyendo funciones globales no es muy programación orientada a objetos, es bastante mágico que permite PHP, pero se debe evitar :)

+0

Hola, gracias por los consejos, la subclasificación en el caso de prueba para clases pequeñas es la pieza que me faltaba. Ya he creado un par de standalones según su sugerencia, pero todavía tengo que buscar una forma de reutilizar los creadores getMock(). – stefgosselin

Cuestiones relacionadas