Saltar al contenido

¿Por qué veo "definir no definido" cuando ejecuto una prueba de Mocha con RequireJS?

Necesitamos tu ayuda para compartir nuestros tutoriales con relación a las ciencias informáticas.

Solución:

La razón por la que su prueba no se está ejecutando es porque src/utils.js no es una biblioteca Node.js válida.

De acuerdo con la documentación de RequireJS, para coexistir con Node.js y CommonJS require estándar, debe agregar un poco de repetitivo en la parte superior de su src/utils.js archivo por lo que RequireJS's define la función está cargada.

Sin embargo, dado que RequireJS fue diseñado para poder requerir un código fuente orientado al navegador web "clásico", tiendo a usar el siguiente patrón con mis bibliotecas Node.js que también quiero ejecutar en el navegador:

if(typeof require != 'undefined') 
    // Require server-side-specific modules


// Insert code here

if(typeof module != 'undefined') 
    module.exports = whateverImExporting;

Esto tiene la ventaja de no requerir una biblioteca adicional para otros usuarios de Node.js y generalmente funciona bien con RequireJS en el cliente.

Una vez que ejecuta su código en Node.js, puede comenzar a probar. Personalmente, sigo prefiriendo el expresso al moka, aunque es el marco de prueba del sucesor.

Falta la documentación de Mocha sobre cómo configurar estas cosas, y es desconcertante descubrirlo debido a todos los trucos de magia que hace debajo del capó.

Encontré el keys para obtener archivos del navegador usando requerir.js para trabajar en Mocha bajo Nodo: Mocha posee tener los archivos agregados a sus suites con addFile:

mocha.addFile('lib/tests/Main_spec_node');

Y segundo, usa beforeEach con la devolución de llamada opcional para cargar sus módulos de forma asíncrona:

describe('Testing "Other"', function(done)
    var Other;
    beforeEach(function(done)
        requirejs(['lib/Other'], function(_File)
            Other = _File;
            done(); // #1 Other Suite will run after this is called
        );
    );

    describe('#1 Other Suite:', function()
        it('Other.test', function()
            chai.expect(Other.test).to.equal(true);
        );
    );
);

Creé un bootstrap sobre cómo hacer que todo funcione: https://github.com/clubajax/mocha-bootstrap

Acuérdate de que tienes la capacidad de valorar este artículo .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.