Tworzę bibliotekę javascript i chcę używać BDD, więc próbuję użyć mocha i nie mogę tego zrobić. Chcę, aby ta biblioteka była używana na kliencie, więc zakładam, że to ma sens, aby uruchamiać ją z adresu URL do przeglądania, być w kontekście połączenia internetowego, a nie tylko piaskownicy z nieokreślonej ścieżki.dlaczego mocha w przeglądarce wyłapuje globalny wyciek z adresu URL, ale nie z niekodowanej ścieżki?
oto test dummy punktem wyjścia plik/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!');
});
});
});
i tutaj jest strona HTML, która uruchamia test, 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>
gdy otwieram w chrom lub safari
file:///Users/me/dev/sandbox/test.html
to działa zgodnie z oczekiwaniami, testy przechodzą bez błędu
kiedy otwarte w Chrome lub Safari
http://localhost/sandbox/test.html
pojawia się następujący błąd, a test nie
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)
może ktoś ma wyjaśnienia, a lepsze rozwiązanie?
Jeśli dodać następujące w tagu skrypt powyżej onload jednym, powinien to naprawić w Chrome (globalne użyteczne w ogóle zbyt): mocha.setup ({Ui: 'BDD', globals : ['script *']}) –