Pregunta breve y aparentemente estúpida porque es muy simple y pensaría omnipresente: ¿alguien ha obtenido algún tipo de cobertura de código para trabajar dentro de un proyecto front-end RequireJS (no NodeJS)?Cobertura de código JavaScript en los módulos RequireJS/AMD
Parece una pregunta estúpida debido a la prevalencia de los enfoques TDD en el mundo JS y la toma de control del desarrollo de AMD.
He intentado un millón de enfoques, todos faltan. Mi proyecto es un proyecto de Backbone con Jasmine Unit Tests:
1) JSTD con el complemento Coverage. JSTD tiene problemas para cargar e instrumentar correctamente los módulos de AMD. Si ejecuto JSTD en un solo archivo js (combinado con el optimizador RequireJS), la cobertura del código funciona muy bien, EXCEPTO que la cobertura se recopila y las métricas se definen en el archivo COMPLETO. Genial, eso es inútil porque incluye bibliotecas de terceros y porque no puedo dirigirme a una sola unidad para ayudar a probar el desarrollo. Argh.
2) JSCoverage - falla total, no le gustan los módulos AMD.
3) Específico de Chrome & Instrumentos 'activos' específicos de Firebug: fallan, no me gustan los módulos AMD.
Cada intento que intento parece requerir grandes cantidades de trabajo personalizado. Entonces, ¿quizás necesito hacer girar una solución personalizada desde cero?
Qué tal el siguiente enfoque: expanda el optimizador RequireJS al código del instrumento y cree una cobertura. Sería una instrumentación en memoria que se puede habilitar con un indicador require.config ({instrument: true}). Cada vez que se requiere cargar un módulo, lo instrumenta automáticamente y lo coloca en su repositorio de módulos. Las estadísticas de cobertura se recopilan en un objeto debajo del objeto requerido global y se puede acceder desde cualquier lugar, por ejemplo, después de una prueba de Jasmine.
Entrada?
cobertura de código no es trivial para implementar. Tendrás que hacer hackers AST con algo como búnker. – Raynos
De acuerdo. Es por eso que comencé usando las librerías AST e instrumentación existentes (Esprima, Node-Cover). Tengo la mayoría de las modificaciones del código RequireJS realizadas y estoy trabajando en la parte de recopilación de instrumentación y cobertura. – Bernardo