Я пытаюсь чертежу обработчик событий нажмите на следующей точки зрения Backbone:Как проверить, что событие в режиме «Магистральное представление» добавляет элемент в коллекцию?
class ItemView extends Backbone.View
events:
"click": "addToCurrentlyFocusedList"
addToCurrentlyFocusedList: (e) =>
window.currentlyFocusedList.add @model
Это то, что у меня есть:
describe "ItemView", ->
beforeEach ->
@item = new Backbone.Model
id: 1
name: "Item 1"
@view = new ItemView model: @item
describe "when clicked", ->
it "adds the item to the currently focused list", ->
window.currentlyFocusedList = sinon.stub()
window.currentlyFocusedList.add = sinon.stub()
@view.$el.trigger "click"
expect(window.currentlyFocusedList.add).toHaveBeenCalledWith @item
Это работает, но это беспокоит меня по какой-то причине. Может быть, это слишком похоже на то, что я тестирую реализацию.
Одно возможное улучшение я могу видеть, движется обработчик события нажатия, спецификации, и currentlyFocusedList
в новое представление под названием AppView
:
describe "AppView", ->
beforeEach ->
@view = new AppView
it "adds a clicked item to the currently focused list", ->
$clickedItem = @view.$(".item:first")
$clickedItem.trigger "click"
expect(@view.currentlyFocusedList.pluck('id')).toInclude $clickedItem.attr('data-id')
Приятно, что это также удаляет загрязнения window
. Он также проверяет, что элемент действительно добавлен в коллекцию. Что в стороне, перемещает обработчик события и spec в AppView
лучше, чем мой первый подход? Есть ли лучший способ сделать это?
Субъективный вопрос. Вероятно, это относится к http://programmers.stackexchange.com/ или http://codereview.stackexchange.com/. –
Прохладный. Я не знал о codereview.stackexchange.com. Спасибо за совет! – Laconical