4

Backbone Marionette アプリケーションをテストしています。テスト ページは、次のスクリプトで構成されています。

  • ジャスミン:<script src="../testing/lib/jasmine-1.3.1/jasmine.js"></script>
  • Jasmine HTML レポーター:<script src="../testing/lib/jasmine-1.3.1/jasmine-html.js"></script>
  • 私の仕様:<script src="js/app.spec.js"></script>
  • セットアップ: Jasmine github ページから正確にコピーされた window.onload コード

奇妙な部分は、次のエラーが発生し続けることです。

Uncaught TypeError: Cannot read property 'SuiteView' of undefined 

スタックトレースを見ました。jasmine.HtmlReporterすべてのテストが完了した後、テストの概要を出力する準備が整います。以下のスクリーンショットに示すように、 を呼び出しjasmine.HtmlReporterHelpers.appendToSummaryます。jasmine.HtmlReporterundefined

オブジェクト メソッドは自分自身を見つけることができません。どうしてこれが起こるのでしょうか?

4

1 に答える 1

0

キャッチされていない TypeError: 未定義のプロパティ 'SuiteView' を読み取ることができません

SuiteView現在実行中のスイートのプロパティであり、この場合は欠落しています。Jasmine のライフサイクルは次のとおりです。

var jasmineEnv = jasmine.getEnv (); //Initialize Environment
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter (); //Initialize Reporter
jasmineEnv.addReporter (htmlReporter); //Add Reporter
jasmineEnv.execute (); //Start Suite

完全なスクリプトは次のとおりです。

<script>
function load()
  {
  var description = location.hash.match(/".+"/).toString().replace(/"/g,"");
  var spec = location.hash.match(/function.+}/).toString();
  var result = Function("return " + spec)();
  var len = jasmine.getEnv().topSuite().children.length;
  var test;
  var suite;
  var suite_name;
  var reporter_args;
  var reporter_methods;
  var i;

  test = jasmine.getEnv().it(description, result);
  suite = jasmine.getEnv().topSuite().children[len];
  reporter_args = jasmine.HtmlReporter.toString().match(/options\.[a-zA-Z]+/g);
  reporter_methods = jasmine.HtmlReporter.toString().match(/this\.[a-zA-Z]+/g)
  var suite_name = suite.fullname;
  for(i = 0; i < len; i++)
    {
    jasmine.getEnv().topSuite().children.shift();
    }
  jasmine.getEnv().execute(suite_name);
  }
</script>

参考文献

于 2015-08-07T03:05:09.917 に答える