Sinon测试ember.js .then方法
sinon testing ember.js .then method
以下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
",其中代码被标记为****任何帮助都是感激的。非常感谢。
你需要做的实际上是返回一个承诺,如:
promise = Ember.RSVP.Promise(function(resolve, reject) {
resolve()
reject()
})
如果你想测试'then'里面是什么,那么在promise的'resolve'函数中返回一些数据。
那么,你可以测试它是否被调用,方法如下:
mock = sinon.mock(controller);
mock.expects('fetchPage').once.returns(promise); // the promise defined earlier
,您可以使用相同的行来测试另一个方法(gotMore)是否使用正确的参数调用:
mock.expects('gotMore').once.withArgs(whateverYouReturnInReolve, whateverPageNumberIs)
相关文章:
- $resource上带有.then()函数的角度自定义方法导致错误
- 将数据从promise then方法传递到对象方法
- Angular Provider/JS-如何访问'叔叔方法'从$http().then()
- 为什么 then() 链式方法不按顺序运行
- “未捕获(在承诺中)”在获取“then”方法中调用拒绝函数时
- 如何重写这段代码,使执行不必从Javascript Promise.then()方法开始
- 未捕获的类型错误:无法调用未定义的方法“then”
- 获取类型错误:无法在 angularjs 控制器中调用未定义的方法 'then'
- .done 或 .then 中的茉莉花测试方法
- TypeError:无法调用未定义的 Angularjs 的方法 'then'
- 为什么来自 Promise '.then' 方法的回调是反模式
- 问.js节点承诺.“套接字”上缺少错误处理程序.类型错误:无法调用未定义的方法“then”
- 与茉莉花中 ES6 承诺的 then/catch 方法同步
- 用javascript实现if-then-else-if-else堆栈的更简单方法是什么
- 角美元http.Post then方法不起作用
- 使用AngularJS创建一个动态表——从success/error方法到.then()方法需要帮助
- 添加“then"方法在预定义的“finally”之前放入$promise链中.方法
- Sinon测试ember.js .then方法
- JetBrains IDEA 2016.1.3:如何停止在“Promise.then”方法上显示警告“未解析的功能”
- this 变量是 Window 对象,或者在 then 方法的 promise 中未定义