【发布时间】:2014-07-31 18:43:28
【问题描述】:
以下2个函数在coffeescript、ember.js函数中
fetchPage: (params) ->
@store.find 'device', params
getMore: (params) ->
nextPage = @get('page') + 1
params.page = nextPage || 1 #when page is null, nextpage still 1
@fetchPage(params).then (devices) =>
@send 'gotMore', devices, nextPage
如何测试最后两行:
@fetchPage(params).then (devices) =>
@send 'gotMore', devices, nextPage
我尝试了以下方法,但没有成功
test 'actions: getMore - not at last page & page exists', ->
Em.run =>
@params = @store.createRecord('device', {id: 1, page: 6})
# params = {page: 99}
metaDataStub = sinon.stub(@store, 'metadataFor')
deviceMetaData = {total_pages: 8}
metaDataStub.withArgs('device').returns(deviceMetaData)
fetchPageStub = sinon.stub(@controller, 'fetchPage')
@controller.set 'page', 6
@controller.send 'getMore', @params
equal params.page,7, 'params.page set to next page'
ok fetchPageStub.calledWithExactly(@params), 'fetchPage called'
metaDataStub.restore()
test 'actions: getMore - not at last page & page not existed', ->
params = {page: 99}
metaDataStub = sinon.stub(@store, 'metadataFor')
deviceMetaData = {total_pages: 8}
metaDataStub.withArgs('device').returns(deviceMetaData)
@controller.set 'page', null
@controller.send 'getMore', params
equal params.page,1, 'params.page set to 1 when next page not exist'
metaDataStub.restore()
它会抛出错误:“Cannot read property 'then' of undefined”,其中代码标有 ****
任何帮助表示赞赏。非常感谢。
【问题讨论】:
标签: javascript unit-testing ember.js coffeescript sinon