2

バックボーン アプリケーションの Jasmine でテストを書いています。テストがカバーするコードの割合を知りたいです。この目標のために、jsTestDriver を使用したいと考えています。しかし、問題があります。構成ファイルを作成し、そこにすべてのリソースを追加しましたが、テストを開始するとバックボーン メソッドが定義されません。これは私の設定ファイルです:

server: http://localhost:9876

load:
  - lib/jasmine-1.3.1/jasmine.js
  - lib/jasmine-jquery.js
  - lib/JasmineAdapter.js
  - lib/sinon-1.5.2.js
  - cordova-2.2.0.js
  - libs/jquery-1.8.2.min.js
  - libs/underscore-min.js
  - libs/backbone-min.js
  - libs/lazyload-min.js
  - core/js/core.js
  - index.js

test:
  - spec/test.js

順序は SpecRunner ファイルと同じです。それは私のテストファイルです:

describe("Attributes", function(){
    it("Test", function() {
        c = new Cars;
        expect(c.attributes.StartDate).toBeDefined();
        expect(c.attributes.StartDate).toBeDefined();
    })
});

Cars は Backbone モデルであり、このモデルにはデフォルトの属性 StartSate があります。私のテストでは、この属性が定義されていることを確認したいと思います。そしてもちろん、WebStorm の間違い:

TypeError: TypeError: Cannot read property 'attributes' of undefined
TypeError: Cannot read property 'attributes' of undefined
           at null.<anonymous> (spec/test.js:10:21)
4

1 に答える 1

0

プロパティhasをチェックするよりも、モデル オブジェクトのメソッドを使用して属性をチェックする方が良いと思います。attributes

describe("Attributes", function(){
    it("Test", function() {
        c = new Cars;
        expect(c.has("StartDate")).toBe(true);
    })
});

hasこのようにして、メソッドをオーバーライドできる暗黙的なロジックをモデルに追加できます。また、モデルを拡張してCarsクラスを作成する方法を指定していません。デフォルト値を指定しましたか?

于 2013-03-07T07:25:27.863 に答える