9

javascriptライブラリを作成していて、BDDを使用したいので、mochaを試してみましたが、動作させることができません。そのライブラリをクライアントで使用したいので、UNCパスからのサンドボックスだけでなく、閲覧可能なURLから実行し、Web接続のコンテキストで実行するのが理にかなっていると思います。

これがダミーの開始点ファイル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>

クロームやサファリで開くと

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

期待どおりに動作し、エラーなしでテストに合格

クロームやサファリで開くと

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)

誰かが説明をして、より良い解決策を得ることができますか?

4

2 に答える 2

6

これは、mocha で jQuery を使用する際の問題でした。jQueryは、一意のIDを持つグローバル変数を作成します...あなたの場合script133.... 最近リリースされたmocha 1.2では、ワイルドカード無視を設定できます...

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

最新の状態であることを確認し、適切に構成してください。

参考:Mocha 1.2.0 ローンチのお知らせ

于 2012-06-23T02:39:48.520 に答える
0

私はサファリの問題を修正する解決策を見つけました...置き換えます

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

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

...しかし、それでもクロームでエラーが発生します:-(

于 2012-06-15T00:24:46.777 に答える