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/