3

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

我给它命名(它负责分页):

class SI.PaginatedCollection extends Backbone.Collection

我想编写 Jasmine 规范来测试我是否扩展了那个特定的类。

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

PS我可以解析 Javascript,但 Coffeescript 是理想的。

4

3 回答 3

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)
于 2012-05-29T11:25:35.137 回答
3

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

collection = new SI.PaginatedCollection();

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

正如这篇博文中提到的

于 2014-07-23T11:49:23.507 回答
0

没有正确的方法来获取super引用,在 JavaScript 中也没有在 Backbone 中,即使文档不建议使用__super__Backbone 方法

我认为最干净的方法是使用伪静态属性手动标记您的子类,例如:

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

任何时候您需要检查实例是否来自特定父级,只需检查myInstance.parent.

于 2012-05-29T11:31:45.870 回答