"SyntaxError: Importación de token inesperada" en la prueba de trufa

Recibo el error "SyntaxError: Importación de token inesperada" cuando realizo la 'prueba de trufa'. Estoy tratando de importar una función declarada en otro archivo al archivo de prueba de java-script. He estado buscando sobre este problema durante bastante tiempo y no pude encontrar ninguna solución. ¿Es este un problema con las pruebas de moca en trufa?

Respuestas (4)

Todo lo que necesitaba era agregar un archivo package.json al directorio del proyecto con algunas dependencias de babel y hacer una 'instalación npm'. Además, agregar un archivo '.babelrc' al directorio del proyecto truffle. Finalmente, agregar algunos requisitos al archivo truffle.js.

archivo paquete.json

{
  "name": "game-token",
  "devDependencies": {
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-stage-2": "^6.24.1",
    "babel-preset-stage-3": "^6.17.0",
    "babel-polyfill": "^6.26.0",
    "babel-register": "^6.23.0"
  }
}

archivo .babelrc

{
  "presets": ["es2015", "stage-2", "stage-3"]
}

requiere en truffle.js

require('babel-register');
require('babel-polyfill');
también requiere babel-polyfill en su devDependencites: "babel-polyfill": "^6.26.0",

Probé la solución de i_robot, y casi* funcionó, tuve que agregar:

require('babel-register')({
  ignore: /node_modules\/(?!zeppelin-solidity)/
});
require('babel-polyfill');

en la parte superior de mi truffle.js. ¡El campo ignorar es importante! Además de agregar babel-polyfill en mis dependencias de package.json:

  "dependencies": {
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-stage-2": "^6.24.1",
    "babel-preset-stage-3": "^6.17.0",
    "babel-register": "^6.23.0",
    "bignumber.js": "^5.0.0",
    "bluebird": "^3.5.1",
    "lodash": "^4.17.4",
    "zeppelin-solidity": "1.6.0"
  }

archivo .babelrc

{
  "presets": ["es2015", "stage-2", "stage-3"]
}

Si no está usando es6 javascript, no puede usar la importpalabra clave. Si está utilizando es6, tal vez no tenga mocha configurado correctamente para comprender o transpilar a es5 antes de ejecutar sus pruebas.

¿Hay algún recurso para configurar correctamente el marco de prueba de mocha en trufa? Eso sería muy util.
Deberá considerar el uso de webpack y babel para transpilar sus pruebas en una versión de js que Mocha entienda. Aquí hay una guía: github.com/trufflesuite/truffle/wiki/… . Y aquí hay una guía genérica sobre el uso de webpack y babel con Mocha: jamesknelson.com/testing-in-es6-with-mocha-and-babel-6 . Acepto votos a favor.

Me resultó más fácil usar el requiremétodo.

src/utils.js:

exports.a = 3;

prueba/foo/testfile.js:

// Note the relative path from the current test file.
const utils = require('../../src/utils.js');
console.log(utils.a); // 3