2011-07-07 13 views
8

Las partes separadas de mi sitio tienen conjuntos separados de archivos Javascript, que -todos juntos- se interfieren entre sí. Para probar todo con Jasmine, parece que necesito alguna forma de definir conjuntos separados de "activos" para diferentes suites. ¿Es esto posible actualmente y, de ser así, cómo?Jasmine: defina conjuntos de archivos de origen separados para Rails?

+0

¿Puede explicar cómo interfieren entre sí? Si coloca cuidadosamente su Javascript en espacios de nombres y comprueba si cada módulo en un espacio de nombres ya está definido antes de definirlo, debería poder evitar conflictos. Quizás si das un ejemplo de un conflicto, se puede mostrar cómo volver a empaquetar las cosas para evitar conflictos. La canalización de recursos de Rails 3.1 esperará (de forma predeterminada, de todos modos) que pueda tener todo su javascript definido en una aplicación.js (es decir, todos sus módulos se transfieren a un solo archivo). – mwolfetech

+1

Tenía un archivo JS configurado para la parte pública de mi sitio y otro para la parte administrativa. Ambos tenían algunas funciones y variables globales con el mismo nombre, porque expusieron un comportamiento similar, pero ligeramente diferente en ambas partes. Lo que terminé haciendo es: (1) factorizar el comportamiento común en archivos JS compartidos y (2) implementar [clases y herencia] (http://ejohn.org/blog/simple-javascript-inheritance/) para encargarme de las variantes en el comportamiento. Así que esencialmente limpié todo el conjunto de archivos JS para que todos puedan coexistir al mismo tiempo. Pero todavía veo valor en probar solo subconjuntos de archivos. –

Respuesta

2

Es posible que desee considerar, como se sugiere, dividir su javascript en diferentes espacios de nombres. Una excelente forma de facilitar la separación de javascript en varios archivos es mediante el uso del module pattern que utiliza cierres y algunas otras buenas propiedades de javascript para ejecutar el código necesario de inmediato y contenerlo.

+0

¿Qué pasa si dos archivos js definen funciones con el mismo nombre? En la aplicación web, ambos no se cargarán, pero con jazmín, colisionan. – apneadiving

+1

Disculpas; No he usado Jasmine antes, pero en general el procedimiento anterior es bueno para dividir archivos javascript. Si hay dos funciones con el mismo nombre, probablemente deberían pertenecer a su propio espacio de nombre/clase. – NT3RP

Cuestiones relacionadas