2011-04-09 11 views
5

Estoy escribiendo pruebas funcionales para los módulos de aplicaciones back-end de mis proyectos. Para probar algunas características, necesito simular las acciones del usuario desde la aplicación frontend. Por lo tanto, he creado 2Symfony: múltiples aplicaciones en una prueba

sfTestFunctional instances: 
$frontendBrowser = new frontendTestFunctional(); 
$backendBrowser = new backendTestFunctional(); 

Estas clases básicamente heredan de sfTestFunctional. Ahora, como sabemos, cada aplicación en Symfony tiene su propia instancia de contexto, así que tenemos que cambiar a ella en primer lugar:

sfContext::switchTo('frontend'); 
//this works fine 
$frontendBrowser-> 
    get('/home'); 

sfContext::switchTo('backend'); 
//the following fails with a misirable error: Cannot redeclare class homeComponents 
$backendBrowser-> 
    get('/home'); 

Por lo tanto, el problema es que ambas páginas tienen sus propias clases con el mismo nombre (homeComponents) que obviamente no se puede incluir en un script. ¿Hay algo que pueda hacer al respecto?

PS, la cuestión no se relaciona necesariamente con Symfony, por lo que también MÁRQUELO 'php'

actualización: Parece que la única solución es cambiar el nombre de todos los módulos en una sola aplicación, por lo que las clases de acción y componentes tienen diferentes nombres. Pero esto es muy complicado.

+0

¿por qué no ejecutar ambas pruebas de a una por vez? – Ibu

+0

porque es posible que necesite algunos resultados de una aplicación al probar la otra. – Dziamid

+0

luego puede crear un script de shell para ejecutarlos – Ibu

Respuesta

1

Puede considerar romper la prueba en dos pruebas distintas.

El primero ejecuta la aplicación frontend y luego comprueba para asegurarse de que el estado de la base de datos, sesión, etc. es correcto.

La segunda prueba configurará el entorno de prueba para imitar los resultados de la aplicación de interfaz que se completa con éxito y luego ejecuta la aplicación de back-end y verifica el resultado.

Esto también ayudará en el camino en caso de que surjan regresiones en cualquiera de las aplicaciones; si tuviera que mantener las pruebas para ambas aplicaciones consolidadas, obtendría menos información de una falla de prueba. Con una prueba por separado para cada aplicación, podrá encontrar la regresión más fácilmente (ya que al menos sabrá qué aplicación se ve afectada).

+0

Así trabajé en esto. Buen punto acerca de las regresiones. – Dziamid

+0

Mientras trabajaba en un plugin [PHPUnit para Symfony 1.4] (http://www.symfony-project.org/plugins/sfJwtPhpUnitPlugin), me encontré con un problema similar. PHPUnit tiene una opción '--process-isolation' que ejecuta cada prueba en su propio proceso, pero hace que la ejecución de la prueba sea ... l ... o ... w ... –

Cuestiones relacionadas