1

次のようなテンプレートを持つ BuildingBlocks ビューがあります。

{{#each controller}}
  {{view App.BuildingBlockView contentBinding="this"}}
{{/each}}

コントローラーを使用して、このビューが各投稿をループすることをテストしようとしています。
ジャスミンを使用しています。

このようなビューを作成しました

App.buildingBlocksView = App.BuildingBlocksView.create()
Em.run ->
  App.buildingBlocksView.append()

そして、このビューのコントローラーに 3 つの BuildingBlocks を設定して、このビューに 3 つの要素が含まれていることをテストできるようにします。

誰でもこれを行う方法を教えてください。

私はこれまでこれをやっていますが、うまくいきません。

App.buildingBlocksController = App.BuildingBlocksController.create()
App.buildingBlocksView.set("controller", App.buildingBlocksController.content)
App.buildingBlocksView.controller.pushObject(App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord())
expect(App.buildingBlocksView.$('.building-block').length).toEqual(3)

しかし、私はエラーが発生しています 未定義のメソッド 'pushObject'を呼び出すことができません

リックを助けてください

4

1 に答える 1

1

あなたは正しい軌道に乗っているようです-ジャスミンを使用するための小道具.

まず、あなたの質問に定義が表示されないので、App.BuildingBlocksController が Ember.ArrayController のサブクラスであることを再確認してください

その場合、インスタンスを作成するときに初期コンテンツ配列を設定する必要があります。次に、ビューのコントローラー プロパティをコントローラー インスタンスに設定し、以前のようにオブジェクトをプッシュします。

App.buildingBlocksController = App.BuildingBlocksController.create({ content: [] })
App.buildingBlocksView.set("controller", App.buildingBlocksController)    
App.buildingBlocksView.controller.pushObject(App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord(), App.BuildingBlock.createRecord())

これにより、pushObject で発生している問題が解決されるはずです。上記を Ember.run() ループ内に移動する必要があると思われます。そうしないと、Ember が DOM を更新していないため、予期が失敗します。

于 2012-07-25T03:27:08.223 に答える