тестирование контроллера представлений с помощью emberjs

У меня есть представление BuildingBlocks с таким шаблоном:

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

Я пытаюсь проверить, что это представление зацикливается на каждом сообщении с помощью контроллера.
Я использую Jasmine.

Я создал такое представление

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 неопределенного

Пожалуйста, помогите Рику


person Rick Moss    schedule 24.07.2012    source источник


Ответы (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.

person Mike Grassotti    schedule 25.07.2012
comment
Любое время. Не бойтесь принимать ;-) meta.stackexchange.com/questions/5234/ - person Mike Grassotti; 25.07.2012