почему mocha в браузере выбрасывает глобальную утечку, обнаруженную по URL, а не по пути unc?

Я создаю библиотеку javascript и хочу использовать BDD, поэтому я делаю попытку в mocha, и я не могу заставить ее работать. Я хочу, чтобы эта библиотека использовалась на клиенте, поэтому я предполагаю, что имеет смысл запускать ее из просматриваемой ссылки, в контексте веб-соединения, а не просто в изолированной программной среде из unc-пути.

вот фиктивный файл отправной точки test / 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!');
    });

  });
});

и вот HTML-страница, которая запускает тест, 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>

когда я открываю в Chrome или Safari

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

работает как положено, тест пройден без ошибок

когда я открываю в Chrome или Safari

http://localhost/sandbox/test.html

Я получаю следующую ошибку и тест не пройден

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)

может у кого-то есть объяснение, а лучше решение?

Ответы на вопрос(2)

замена

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

от

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

... но все равно получаю ошибку в chrome :-(

 09 нояб. 2012 г., 18:23
Если вы добавите следующее в тег сценария над тегом onload, оно должно исправить это в chrome (глобальные переменные также полезны): mocha.setup ({ui: & apos; bdd & apos ;, глобальные переменные: [& apos; script * & apos;] })

альные переменные, которые имеют уникальный идентификатор ... в вашем случаеscript133..., Недавно выпущенный в Mocha 1.2 вы можете настроить игнорирование подстановочных знаков ...

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

Убедитесь, что вы в курсе, и настроить соответствующим образом.

Ссылка:Уведомление о запуске Mocha 1.2.0

Ваш ответ на вопрос