1

これは単なる JavaScript スコープの質問だと思います。

Jasmine テストを Backbone アプリケーションに追加しようとしていますが、Jasmine セットアップ内から Backbone モデルにアクセスする方法がわかりません。

これは私の現在のアプリケーション構造です (main.jsは私のバックボーン アプリケーションです):

index.html
js/
  main.js
  vendor/
    backbone.js
    jquery.min.js // etc  
tests/
  SpecRunner.html
  spec/
    testSpec.js

の内容main.jsはこのようなもので、からすべて正常に実行されていindex.htmlます:

$(function(){
  var Todo = Backbone.Model.extend({
    defaults: function() {
      return {};
    }, 
 ... etc

SpecRunner.html 内のファイルは次のようになります。

  <!-- include source files here... -->
  <script src="/js/vendor/jquery-1.10.2.min.js"></script>
  <script src="/js/vendor/underscore.js"></script>
  <script src="/js/vendor/backbone.js"></script>
  <script src="/js/main.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/testSpec.js"></script>

でこのテストを書きましtestSpec.jsたが、次のエラーで失敗しReferenceError: Todo is not definedます:

describe("Todo tests", function(){ 
  var todo = new Todo("Get the milk", "Tuesday"); 
  it("should be correctly defined", function(){
    expect(todo).toBeDefined();
  });
  it("should have the correct title", function(){
    expect(todo.title).toBe("Get the milk");
  });
});

どうすれば Todo スコープを取得できますか? 試してみましwindow.Todoたが、それも役に立ちません。

4

1 に答える 1