如何测试我的Backbone集合在Jasmine中扩展的类

时间:2012-05-29 10:51:50

标签: javascript backbone.js coffeescript jasmine

我在Coffeescript中有一个自定义的Backbone.Collection类。

我将其命名(它负责分页):

class SI.PaginatedCollection extends Backbone.Collection

我想编写Jasmine规范,测试我是否会扩展该特定类。

对不起我的英语,我现在可能很恐怖。 ;)

PS 我可以解析Javascript,但Coffeescript会很理想。

3 个答案:

答案 0 :(得分:9)

对我来说测试这个似乎有些过分,但你可以这样做:

describe "SI.PaginatedCollection", ->

  beforeEach ->
    @collection = new SI.PaginatedCollection()

  it "is a subclass of Backbone.Collection", ->
    expect(@collection instanceof Backbone.Collection).toBeTruthy()

如果你要经常检查instanceof和/或你关心描述性的Jasmine输出,那么制作一个自定义匹配器是值得的,所以你可以这样写:

expect(@collection).toBeInstanceOf(Backbone.Collection)

答案 1 :(得分:3)

在Jasmine 2.0中,您可以使用jasmine.any()匹配器。 E.g:

collection = new SI.PaginatedCollection();

expect(collection).toEqual(jasmine.any(Backbone.Collection));

this blogpost

中所述

答案 2 :(得分:0)

没有正确的方式来获取super引用,也没有使用JavaScript,但是在{@ 3}}中,即使使用the __super__ Backbone method也不建议使用the documentation

我认为最干净的方法是使用伪静态属性手动品牌你的子类,如:

var SI.PaginatedCollection = Backbone.Collection.extend({
  parent: "Backbone.Collection"
});

每当您需要检查某个实例来自特定的父级时,只需检查myInstance.parent