2012-06-14 9 views
8

Estoy creando una biblioteca de JavaScript y quiero usar BDD, así que estoy probando en mocha y no puedo hacer que funcione. Quiero que esa biblioteca se use en el cliente, por lo que supongo que tiene sentido que se ejecute desde una url navegable, para estar en un contexto de conexión web, y no solo un entorno limitado desde una ruta unc.¿por qué mocha en el navegador arroja una fuga global detectada desde una url pero no desde una ruta unc?

aquí es la prueba de archivo de punto de partida maniquí/test.foobar.js

var assert = chai.assert; 

var foobar = { 
    sayHello: function() { 
    return 'Hello World!'; 
    } 
}; 

describe('Foobar', function() { 
    describe('#sayHello()', function() { 
     it('should work with assert', function() { 
     assert.equal(foobar.sayHello(), 'Hello World!'); 
    }); 

    }); 
}); 

y aquí está la página HTML que desencadenan la prueba, test.html

<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Mocha Tests</title> 
    <link rel="stylesheet" href="testing/mocha.css" /> 
    <script src="testing/jquery.js"></script> 
    <script src="testing/mocha.js"></script> 
    <script>mocha.setup('bdd')</script> 
    <script src="testing/chai.js"></script> 
    <script src="test/test.foobar.js"></script> 
    <script> $(function() { mocha.run(); }) </script> 
</head> 
<body> 
    <div id="mocha"></div> 
</body> 
</html> 

cuando abra en Chrome o Safari

file:///Users/me/dev/sandbox/test.html 

funciona como se espera, la prueba pasan sin error

cuando abro en Chrome o Safari

http://localhost/sandbox/test.html 

me sale el siguiente error y la prueba fallará

Error: global leak detected: script1339700707078 
    at Runner.checkGlobals (http://localhost/sandbox/testing/mocha.js:3139:21) 
    at Runner.<anonymous> (http://localhost/sandbox/testing/mocha.js:3054:44) 
    at Runner.emit (http://localhost/sandbox/testing/mocha.js:235:20) 
    at http://localhost/sandbox/testing/mocha.js:3360:14 
    at Test.run (http://localhost/sandbox/testing/mocha.js:3003:5) 
    at Runner.runTest (http://localhost/sandbox/testing/mocha.js:3305:10) 
    at http://localhost/sandbox/testing/mocha.js:3349:12 
    at next (http://localhost/sandbox/testing/mocha.js:3233:14) 
    at http://localhost/sandbox/testing/mocha.js:3242:7 
    at next (http://localhost/sandbox/testing/mocha.js:3192:23) 

alguien puede tener una explicación y una solución mejor?

Respuesta

0

he encontrado una solución que corrige el problema en Safari ... reemplazando

<script> $(function() { mocha.run(); }) </script> 

por

<script> 
     onload = function(){ 
     var runner = mocha.run(); 
     }; 
</script> 

... pero aún así obtener el error en cromo :-(

+2

si se añade lo siguiente en una etiqueta de script sobre el proceso de carga uno, debe fijarlo en cromo (globales útiles, en general, demasiado): mocha.setup ({ui: '' bdd, variables globales : ['script *']}) –

6

Este fue un problema con el uso de jQuery con mocha. JQuery crea variables globales que tienen una identificación única ... en su caso script133.... Lanzado recientemente en mocha 1.2 puede configurar wi ldcard ignora ...

$(function(){ 
    mocha 
    .globals([ 'script*' ]) // acceptable globals 
    .run(); 
}); 

Asegúrese de estar actualizado y configurar adecuadamente.

Referencia: Mocha 1.2.0 launch notice

Cuestiones relacionadas