2012-03-15 23 views
68

Tengo problemas para que Mocha funcione como se esperaba, y me gustaría decir como está documentado, pero parece que no hay mucha documentación sobre cómo realmente funciona. .¿Cómo instalas y ejecutas Mocha, el módulo de prueba Node.js? Obteniendo "mocha: comando no encontrado" después de la instalación

lo he instalado usando npm (tanto global como localmente), y cada vez cuando lo ejecuto me sale:

$ mocha 
mocha: command not found 

Ok, así que pensé que no está en mi PATH, así que traté de correr directamente,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory 

Por último, he intentado golpear el otro archivo bin, y consiguió,

$ ./node_modules/mocha/bin/_mocha 
path.existsSync is deprecated. It is now called `fs.existsSync`. 

    . 

    ✔ 1 tests complete (1ms) 

¿Cómo puedo ejecutar mis pruebas con un solo comando? Vows parece permitirte, pero he escuchado que Mocha es la mejor opción, parece que no puedo hacer que funcione correctamente.

¿Alguna idea del error que obtuve en mi tercer intento?

Editar:

estoy corriendo,

  • Ubuntu 11.10 64 bits
  • Node.js 0.7.5
  • NPM 1.1.8
  • moka 0,14. 1
  • debería 0.6.0
+2

con el nodo 0.6.12, npm 1.1.4, y al ejecutar 'npm install mocha', obtengo'./Node_modules/.bin/mocha' como se esperaba. 'sudo npm install -g mocha' me recibe'/usr/local/bin/mocha'. Si esto no funciona correctamente en su entorno, podría ser un error, o simplemente mocha no se actualizó al nodo de soporte 0.7. *. En cuanto a su advertencia de obsolescencia, 'exists' y' existsSync' se movieron de 'ruta' a' fs' en el nodo 0.7.1. –

+0

Bajé de categoría a Node.js 0.6.12, agregué "./node_modules/.bin" a mi PATH, y todo está bien con el mundo. –

Respuesta

138

no desea que sus pruebas fallan a la biblioteca en función de la configuración de la máquina (moka moka como la versión global, mundial, etc.), la manera de utilizar el moka local que funciona multiplataforma es:

node node_modules/.bin/mocha 

npm pone alias a todos los binarios en sus dependencias en esa carpeta especial. Por último, la NGP se sumará node_modules/.bin en el PATH de forma automática cuando se ejecuta un script de NPM, por lo que en su package.json se puede hacer simplemente:

"scripts": { 
    "test": "mocha" 
} 

e invocar con

npm test 
+1

+1, he estado usando mocha desde hace algún tiempo, pero no me di cuenta. ¡Esta debería ser la respuesta aceptada! – gihanchanuka

+1

Si no desea instalar mocha globalmente, agregue '" scripts ": {" test ":" ./node_modules/.bin/mocha "}' –

+5

@ michael.kebe no, no necesita especificar que ruta para usar el mocha local, npm ya agrega "./node_modules/.bin" a $ PATH, por lo que usará la versión local de forma predeterminada. – Benja

15

Después de la lectura adicional, y la confirmación por parte de Linus G Thiel anterior, me encontré con que simplemente tenía que,

  • Degradar para Node.js 0.6.12
  • Y tampoco,
    • Instalar Mocha como mundial
    • ./node_modules/.bin Añadir a mi PATH
+4

Tengo el nodo 0.8.12 y mocha instalados local y globalmente (para diferentes proyectos), y están funcionando. Así que no es necesario degradar el nodo. Para mocha instalada localmente, solo asegúrese de que su RUTA esté configurada como arriba, o llámela directamente desde su secuencia de comandos (etiqueta Makefile o "scripts"). –

+1

Tenía Mocha instalado local y globalmente pero no se encontró en la ruta (Win8). Tuve que agregar manualmente la carpeta './node_modules/.bin' relativa a mi proyecto a mi PATH, reiniciar la consola y luego escribir 'mocha' funcionaría. No es ideal, pero es un truco rápido para que funcione. Quizás si tuviera una ubicación de nivel superior para instalar mocha localmente, entonces vincule a esa RUTA para que pueda usarla en otro lugar. – Ali

+2

Oh no, esta no debería ser la respuesta aceptada ... –

Cuestiones relacionadas