javascript unit-testing dojo amd intern

javascript - Cargando dependencias fuera del directorio del proyecto en el pasante



unit-testing dojo (2)

Bien, así que hasta que alguien salga con una solución mejor, solo crearé enlaces simbólicos dentro de mi carpeta de intern-tests/ proyecto.

Para hacerlo en Windows, esto se parece a lo siguiente:

mklink /j "c:/www/intern-tests/project-symlinks/project2" c:/www/project2

que tiene la convención mklink /j "path/to/symlink" path/to/original (la / j es para la unión)

En Mac / Linux, harías lo siguiente:

ln -s /www/project2 /www/intern-tests/project-symlinks/project2

que tiene la convención ln -s /path/to/original /path/to/symlink (la -s es para simbólico)

Esto se parece a lo siguiente:

www/ project1/ app/ lib/ project2/ app/ lib/ intern-tests/ project-symlinks/ project1/ project2/ node_modules/ tests/ functional/ project1-tests/ project2-tests/ unit/ project1-tests/ project2-tests/ intern.js Gruntfile.js

Y cambia mi prueba a la siguiente:

define([ ''intern!object'', ''intern/chai!assert'', ''jquery'', ''../../../project-symlinks/project2/lib/js/var/document'', ''../../../project-symlinks/project2/lib/js/exports/file/functions/resizeInput'' ], function(registerSuite, assert, $, document, resizeInput) { registerSuite({ name: ''functions'', resizeInput: function() { var $input = $(document.createElement(''input'')); resizeInput($input, 8, 20, 450, 200); assert.equal($input.width(), 450); } }); });

La respuesta a esta pregunta no responde a mi pregunta.

Me gustaría cargar dependencias fuera de la raíz de mi proyecto usando Intern como mi marco de prueba. Actualmente estoy trabajando con la siguiente estructura de directorios:

www/ project1/ app/ lib/ project2/ app/ lib/ intern-tests/ node_modules/ tests/ functional/ project1-tests/ project2-tests/ unit/ project1-tests/ project2-tests/ intern.js Gruntfile.js

Como puede ver, estoy haciendo intern-tests su propio proyecto y quiero que este directorio contenga todas mis pruebas para todos mis proyectos. Ya configuré mi Gruntfile para ejecutar pruebas con la biblioteca exec grunt, convirtiendo el comando grunt projectName en grunt test --project=projectName . Todo eso funciona bien, pero mis pruebas de unidad no pueden cargar las dependencias en los project1/ y project2/ .

Por ejemplo, esta es una de mis pruebas de unidad:

define([ ''intern!object'', ''intern/chai!assert'', ''jquery'', ''../../../../project2/lib/js/var/document'', ''../../../../project2/lib/js/exports/file/functions/resizeInput'' ], function(registerSuite, assert, $, document, resizeInput) { registerSuite({ name: ''functions'', resizeInput: function() { var $input = $(document.createElement(''input'')); resizeInput($input, 8, 20, 450, 200); assert.equal($input.width(), 450); } }); });

y ejecutar esa prueba me da el siguiente error:

SUITE ERROR Error: Failed to load module ../project2/lib/js/var/document from project2/lib/js/var/document.js (parent: tests/unit/project2/functions) at HTMLScriptElement.handler <__intern/node_modules/dojo/loader.js:517:27>

¿Cómo puedo incluir estos archivos externos de mis otros proyectos?


Tal vez estoy pensando demasiado simple, pero pienso de esta manera:

  • proyecto1 es un proyecto
  • project2 es un proyecto
  • intern_tests es un proyecto

Para lograr lo que quieres lograr:

cd /path/to/project1/ npm link cd /path/to/project2/ npm link cd /path/to/intern_tests/ npm install project1 project2

Ahora tienes una estructura de proyecto así:

intern_tests/ node_modules/ project1 project2 tests/ unit/ functional/