我在 Coffeescript 中有一个自定义的 Backbone.Collection 类。
我给它命名(它负责分页):
class SI.PaginatedCollection extends Backbone.Collection
我想编写 Jasmine 规范来测试我是否扩展了那个特定的类。
对不起我的英语,我现在可能很糟糕。;)
PS我可以解析 Javascript,但 Coffeescript 是理想的。
我在 Coffeescript 中有一个自定义的 Backbone.Collection 类。
我给它命名(它负责分页):
class SI.PaginatedCollection extends Backbone.Collection
我想编写 Jasmine 规范来测试我是否扩展了那个特定的类。
对不起我的英语,我现在可能很糟糕。;)
PS我可以解析 Javascript,但 Coffeescript 是理想的。
测试这个对我来说似乎有点矫枉过正,但你可以这样做:
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)
在 Jasmine 2.0 中,您可以使用jasmine.any()
匹配器。例如:
collection = new SI.PaginatedCollection();
expect(collection).toEqual(jasmine.any(Backbone.Collection));
正如这篇博文中提到的
没有正确的方法来获取super
引用,在 JavaScript 中也没有在 Backbone 中,即使文档不建议使用__super__
Backbone 方法。
我认为最干净的方法是使用伪静态属性手动标记您的子类,例如:
var SI.PaginatedCollection = Backbone.Collection.extend({
parent: "Backbone.Collection"
});
任何时候您需要检查实例是否来自特定父级,只需检查myInstance.parent
.