2

我正在 Jasmine 中为 Backbone 应用程序编写测试,我想知道我的测试覆盖的代码比例。为此,我想使用 jsTestDriver。但是我有一个问题:我创建了一个配置文件并在那里添加了所有资源,但是当我开始测试 Backbone 方法时没有定义。这是我的配置文件:

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 回答