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.any()Jasmine 2.0 ではマッチャーを使用できます。例えば:

collection = new SI.PaginatedCollection();

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

このブログ投稿で述べたように

于 2014-07-23T11:49:23.507 に答える
0

参照を取得する適切な方法はsuperなく、JavaScript にも Backbone にもありません。Backbone メソッドを使用しても__super__、ドキュメントではお勧めできません。

最もクリーンなアプローチは、次のような疑似静的属性を使用してサブクラスを手動でブランド化することだと思います。

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

インスタンスが特定の親からのものであることを確認する必要がある場合はいつでも、myInstance.parent.

于 2012-05-29T11:31:45.870 に答える