我正在尝试在视图中测试此代码:
attributeBindings: ['style'] #tested ok
style: (->
if @get('controller.isFilterApplied')
'display: block;'
else
'display: none;'
).property('controller.isFilterApplied')
在使用sinon和qunit的测试文件中,对attributeBindings的测试工作得很好,所以我假设文件的连接是建立的:
test 'attributeBindings', ->
deepEqual @view.get('attributeBindings'),
['style'],
'attributeBindings match'
接下来,我尝试按上述方法测试style
函数,
我在我的测试文件中尝试了this.view.get('controller')
,但即使我在测试文件中添加了所有控制器,它仍返回null
needs: [
#all controllers related are added here
]
我尝试了一种不太好的方法:
test 'style -isFilterApplied false', ->
originalGet = @view.get
getStub = sinon.stub(@view, 'get')
getStub.withArgs('controller.isFilterApplied').returns(false)
@view.get = originalGet
equal @view.get('style'), 'display: none;', 'style on true'
但返回false属性不起作用,@get 'controller.isFilterApplied'
在调试时返回null。
那么,我怎么能手动将视图的控制器设置到应该链接到我的测试文件中的控制器呢?或者我应该如何改变sinon
答案 0 :(得分:0)
moduleFor 'view:viewName', 'viewName',
setup: ->
@view.set 'controller', App.__container__.lookup('controller:theControllerINeed')
我将此添加到setup函数,然后立即定义this.view.controller。