pruebas Karma con AngularJS &# 43; RequireJS

Publicado Miér 11 Feb, 2015 Mónica

Configuración de la prueba suele ser un poco doloroso - pero la configuración de la prueba cuando se está utilizando algún tipo de extraña angular + requieren una configuración es aún peor! Por otra parte, la documentación Karma es un poco escueta, por lo que es difícil saber exactamente qué combinación de ajustes de configuración le conseguirá el resultado previsto. He aquí cómo lo logré.

Aquí hay una jerarquía típica, muestra. Mi directorio de nivel superior es algo así como / opt / alguna aplicación. Sin embargo, ya que todas las configuraciones se utilice rutas relativas, esto no es realmente importante. Todo lo que necesita saber es que mi raíz del proyecto contiene “app9rdquo; como un subdirectorio.

Como podrán deducir, para este post voy a hablar de cómo vamos a probar un filtro, que se utiliza en nuestra aplicación. A continuación vamos a ver los archivos clave en juego aquí:

  • my_filter.js El filtro que desea probar.
  • my_filter_spec.js El archivo con nuestras pruebas en el mismo.
  • app.js Nuestro módulo angular.
  • karma.conf.js El archivo de configuración, que indican al servidor de Karma qué archivos para ver y servir.
  • main.js vs. prueba-main.js Main.js es real configuración RequireJS de nuestra aplicación, lo que queremos reflejar lo más fielmente posible en prueba-main.js, para que todos nuestros definir declaraciones que trabajan en nuestra aplicación también trabajan en nuestras pruebas.

La creación de módulos angulares con Exigir

En general, lo que hay que recordar es que si quieres probar algo, cada módulo AMD debe devolver la función que desea probar, así que puede inyectar más tarde. Voy a suponer que ya tiene algún tipo de trabajo angular + requieren una configuración que desea probar, y voy a pasar por alto los detalles de bootstrapping su módulo angular núcleo. Aquí es sólo un pequeño ejemplo de un “requireable9rdquo; Módulo angular y un filtro.

1. Revisar los main.js para su configuración Exigir Voy a asumir que usted está familiarizado con Requerir, y sólo discutir las partes de la instalación RequireJS que necesitamos para obtener pruebas para trabajar.

Así que ya ves, estamos contando Requerir a empezar a buscar en los scripts / de forma automática, por lo que de esta manera, cuando definimos un nuevo módulo, Exigir comenzará a resolver dónde buscar un archivo para incluir como una dependencia mediante el uso de esta baseUrl.

2. Definir un módulo Esto nos permite definir los componentes en un módulo en tiempo de ejecución. Una vez que creamos este módulo, vamos a ser capaces de incluir en cualquier lugar usando definir ([ 'app'], la función () < . >) Porque sabe que main.js “app9rdquo; en realidad significa “scripts / app.js9rdquo ;.

3. Crear un filtro, registrarlo en el módulo

Bien, ahora usted tiene las tres “normal9rdquo principal; componentes necesarios para este ejemplo:

Ahora vamos a crear el “testing9rdquo; contrapartes:

... y, por supuesto, la configuración del Karma en sí.

Ahora es un buen momento para instalar Karma y sus componentes variables si no lo ha hecho.

Ahora puede navegar a app / prueba / y ejecute:

Cuando una de las indicaciones que le pregunta si está utilizando RequireJS, decir que sí. Esto va a generar las bases de nuestros dos archivos de configuración importantes: karma.conf.js y prueba-main.js. Naturalmente, no van a trabajar fuera de la caja, pero vamos a llegar allí.

Comience abriendo karma.conf.js. Este archivo tiene un montón de ajustes interesantes, que vamos a discutir a su vez. En primer lugar, te voy a mostrar la configuración de trabajo para nuestro proyecto de ejemplo:

Lo más importante es que nos importa basePath. Queremos que esto sea la ruta de nuestro proyecto, por lo que el Karma puede encontrar nuestros archivos, archivos angulares del vendedor, y archivos de prueba, y Exigir a servirlos. Este es el punto crítico. Sólo los archivos que son atendidas por el Karma se pueden encontrar durante las pruebas, cuando se requiere está tratando de reunir sus dependencias. Esta es la razón, por ejemplo, tenemos la siguiente línea en los archivos:

Porque sin esto, cuando la configuración de prueba-main.js, obtendremos 404 WARN de al intentar cargar angular. Como regla general, cualquier archivo que desea probar, o que es una dependencia de un archivo que desea probar, debe ser recogido por el Karma, haciendo coincidir una entrada en “files9rdquo ;.

Me aumentado la logLevel así que pondremos salida con más información durante la depuración, y se volvió a AutoWatch cierto, por lo que cualquier cambio en la prueba-main.js son recogidos. Si se realizan cambios en karma.conf.js, que tendrá que matar a Karma y comenzar el proceso de nuevo para que se tenga en cuenta estos cambios.

Tiempo para la primera prueba! Intente ejecutar el karma con su archivo de configuración. Se debe escupir a cabo una larga lista biiiiig de todos los archivos que le he dicho que para servir (sobre todo debido a la configuración config.LOG_DEBUG).

Usted debe obtener una salida que dice que se ha cargado el archivo de configuración. Si se produce un error que no puede encontrar el archivo de configuración, asegúrese de que la ruta del archivo después de “inicio Karma” es correcta. Estoy funcionando esto desde mi directorio de nivel superior (/ opt / alguna aplicación).

Ahora usted puede abrir su navegador en http: // localhost: 9876. Si su orden de arranque karma sigue en funcionamiento, debería ver una bandera verde alegre en la parte superior de la pantalla.

Piense en prueba-main.js como una manera de anular main.js para el propósito de la prueba. De esta manera, todos los archivos de mantener la misma definir sentencias, pero en realidad son “mirar a otro sitio” para el propósito de la prueba.

Lo primero es lo primero: La configuración por defecto Karma + RequireJS está mal. En particular, la forma en que decide cómo se pasan los archivos a deps deben tener el formato. Verá una función llamada fileToModule. BÓRRALO. Este intenta truncar la extensión .js de los archivos de prueba, que en realidad no lo quieren hacer, porque Karma realmente hacer una petición HTTP para my_filter_spec en lugar de my_filter_spec.js. Prueba este lugar para recoger los archivos de prueba:

La siguiente parte importante de este archivo es baseUrl. Este es el hermano perdido mucho tiempo de Loooong basePath en karma.conf.js - es difícil de imaginar cuando se está buscando en ellos, pero están trabajando juntos en alguna forma misteriosa.

Para nosotros, el siguiente emparejamiento funciona:

Esto se debe a que el karma está sirviendo todo nuestro directorio de nivel superior en / base. Por lo tanto, para reflejar nuestros main.js normales, que tiene baseUrl: '/ scripts', en prueba-main.js ponemos '/ base / app / scripts'. Así que en nuestros dos configuraciones para Require.js, requiere está usando nuestra “scripts / 9rdquo; carpeta como punto de partida.

Siguiendo esta lógica, podemos volver a definir dónde queremos que nuestros caminos en la prueba principal que venir de:

Ahora bien, esto significa que, cuando tenemos un archivo con el siguiente encabezado:

Cuando se carga usando main.js, “ruta / a / somewhere9rdquo; se carga http: // localhost: 8080 / scripts / ruta / a / en algún lugar de su servidor web normal. Al utilizar test-main.js, el mismo archivo requerirá http: // localhost: 9876 / base / app / scripts / ruta / a / en algún lugar del karma. Es decir, el código se puede utilizar para ejecutar la aplicación o para las pruebas, sin necesidad de modificaciones de los caminos de dependencia en archivos individuales!

Ahora por fin tenemos para tratar de atar todo junto con nuestro primer archivo de especificaciones. Comience instalando angulares-burla, ya que esto nos permitirá dejar constancia de nuestro filtro antes de que lo probamos.

Agregue esto a su archivo de prueba-main.js bajo “paths9rdquo ;:

Una vez incluimos angularMocks como una dependencia, tendremos angular.mock disponible en nuestra instancia de angular. Podemos usar esto para construir componentes sobre la marcha a medida que probamos.

Ahora es el momento de iniciar el karma nuestras pruebas !! Debería ver un mensaje muy interesante:

Una vez que esto funciona, puede seguir adelante y escribir una verdadera prueba:

Claramente, esto es sólo la punta del iceberg, y hay mucho más trabajo por hacer para tener una base de código bien probado con una combinación de angular y requieren. Aquí están algunos recursos adicionales en el trabajo con la unidad de pruebas en un entorno Requerir + Angular:


Guild Wars 2 exótica karma proveedor táctico deathstrider

Descarga, escuchar y ver su Guild Wars 2 gratis exótico Karma vendedor Táctico Deathstrider MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis exótico Karma vendedor Táctico Deathstrider MP3, vídeo y Letras

Descarga, Escucha y vista libre ★ ★ Guild Wars 2 - L80 Karma Vendedores MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis - Templo de Balthazar Karma Vendor - tan caro MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis exótico Karma proveedor de Iluminado Surefoot MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis exótico Historiador Karma vendedor Vermoth MP3, vídeo y Letras

Descarga, Escucha y Ver Gremio libre Wars 2 | Templo de Lyssa Karma Armaduras MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis - apertura 1000 - Perdida Joyeros Orrian MP3, vídeo y Letras

Descarga, Escucha y vista libre GW2 TA UU senda exp plazo de MP3, vídeo y Letras

Descarga, Escucha y Ver Gremio libre Wars2 exótico armadura Karma vendedor Guardián Jonez Deadrun MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis exótico Karma Armadura de proveedores Cruzado Benson / Señor de la Guerra Benson MP3, vídeo y Letras

Descarga, Escucha y vista libre GW2 - Karma, Karma comerciantes, y con el puesto de venta. MP3, vídeo y Letras

Descarga, Escucha y vista libre del vendedor Karma MP3, vídeo y Letras

Descargar, escuchar y ver su Guild Wars 2 libres del pirata Puzzle Fast Track & Pirata Karma engranaje MP3, vídeo y Letras

Descarga, Escucha y Ver Gremio libre Wars 2 | Karma Impulsar truco !! MP3, vídeo y Letras

Descarga, Escucha y vista libre Sharkmaw cavernas Karma Vendedor MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis Crepúsculo Arbor FF senda exp run.wmv MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis - apertura 1000 - Perdidas Joyeros Orrian Hojas de cálculo de MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis - ¿Cómo obtener el Guerrero / Guardián "Zurcidura" Conjunto de armadura MP3, vídeo y Letras

Descarga, escuchar y ver su Guild Wars 2 gratis - Conjunto Armageddon PvP MP3, vídeo y Letras

Descargar, escuchar y vista libre [GW2 - Ingeniero] "Ningún lugar para esconderse" Logro (Cómo hacer en menos de 7s) MP3, vídeo y Letras