Я использую следующий код Coffeescript для проверки того, что инициализация одного представления backbone.js создает другое:
describe 'Avia.AviaView', ->
beforeEach ->
@aviaView = new Avia.AviaView(addFixtureDiv('avia'))
@matricesView = new Backbone.View()
spyOn(Avia, 'MatricesView').andCallFake(
(element) =>
if !element
throw "Expected MatricesView to be constructed with a parent element"
else if element.attr('id') != 'tabs-3'
throw "Expected MatricesView to be constructed with the parent element #tabs-3"
else
@matricesView
)
describe 'initialize', ->
beforeEach ->
@aviaView.initialize()
it 'creates a new MatricesView ', ->
expect(Avia.MatricesView).toHaveBeenCalledOnce()
Это работает хорошо, но я не могу не думать, что это должно быть возможноулучшить это.Я представляю себе синтаксис, такой как:
it 'creates a new MatricesView ', ->
expect(Avia.MatricesView).toHaveBeenCalledMatching((args...) => args[0].attr('id') == 'tabs-3')
... где toHaveBeenCalledMatching
принимает функцию, которая принимает знак аргумента и возвращает truey, чтобы указать успех, и ложно в противном случае.
Кто-нибудь сталкивался с чем-то подобным, или мне нужно накатить свой здесь?Или у кого-нибудь есть лучшее предложение о том, как улучшить этот код?