Actualmente estoy aprendiendo Solidity a través de un curso de Udemy y actualmente estoy cubriendo una sección que explica las pruebas con Mocha. Estoy usando la función de descripción con la sintaxis que se cubre en el ejemplo y tratando de ejecutar la prueba usando 'npm run test'.
A continuación se muestra el código para Inbox.test.js
const assert = require('assert'); const ganache = require('ganache-cli'); const Web3 = require('web3'); //Provider is a communication layer between web3 lib and some ETH network const web3 = new Web3(ganache.provider()); class Car{ park (){ return 'stopped'; } drive (){ return 'vroom'; } describe('Car', () => { it('park function', () => { const car = new Car(); assert.equal(car.park(),'stopped'); }); }); } }Sin embargo, cuando intento ejecutar esto, aparece el siguiente error que indica que no puedo descifrar la publicación investigando en línea y mirando otros subprocesos de stackoverflow. En la documentación y los ejemplos en línea (incluso en el sitio principal de Mocha), veo que el primer argumento es una cadena, pero recibo este error.
/Users/rohanmahale/Documents/Solidity/inbox/test/Inbox.test.js:25 describe('Car', () => { ^^ SyntaxError: Unexpected string at Object.compileFunction (node:vm:352:18) at wrapSafe (node:internal/modules/cjs/loader:1032:15) at Module._compile (node:internal/modules/cjs/loader:1067:27) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:168:29) at ModuleJob.run (node:internal/modules/esm/module_job:195:25) at async Promise.all (index 0) at async ESMLoader.import (node:internal/modules/esm/loader:337:24) at async importModuleDynamicallyWrapper (node:internal/vm/module:437:15) at async formattedImport (/Users/rohanmahale/Documents/Solidity/inbox/node_modules/mocha/lib/nodejs/esm-utils.js:7:14) at async Object.exports.requireOrImport (/Users/rohanmahale/Documents/Solidity/inbox/node_modules/mocha/lib/nodejs/esm-utils.js:48:32) at async Object.exports.loadFilesAsync (/Users/rohanmahale/Documents/Solidity/inbox/node_modules/mocha/lib/nodejs/esm-utils.js:103:20) at async singleRun (/Users/rohanmahale/Documents/Solidity/inbox/node_modules/mocha/lib/cli/run-helpers.js:125:3) at async Object.exports.handler (/Users/rohanmahale/Documents/Solidity/inbox/node_modules/mocha/lib/cli/run.js:374:5)describe no debe estar dentro de su clase de automóvil.
Tal como está, nodejs esperaría algún método de clase que sería describe(text, callback) . En lugar de "texto", está proporcionando una cadena.
Así es como debería verse:
class Car{ park (){ return 'stopped'; } drive (){ return 'vroom'; } } describe('Car', () => { it('park function', () => { const car = new Car(); assert.equal(car.park(),'stopped'); }); });