【发布时间】:2018-02-02 11:59:31
【问题描述】:
我有一个看起来像这样的 jquery ajax 调用:
$.ajax({
type: "GET",
dataType: 'json',
data: data,
url: url
}).then((data, successFlag, xhr) => {
this.props.someFunc(data)
})
在我的测试文件中,我使用 sinon 将 jquery ajax 调用存根,它返回一个带有数据的已解决承诺:
sinon.stub($, 'ajax')
.returns(Promise.resolve({ data: 'test data' }))
而且我还在监视我的 someFunc(data) 函数。在我的测试中,我正在调用一个进行 ajax 调用的函数,然后期望我的 someFunc(data) 被调用。但是,期望失败了,但是当我将控制台日志放入我的 someFunc(data) 函数时,我可以看到它显然被调用了:
component.instance().makeAjaxCall()
expect($.ajax.calledOnce).to.be.true // passes
expect(someFuncSpy.calledOnce).to.be.true // fails
现在我假设它失败了,因为它在此之前检查了期望。然后执行,我尝试查找一些处理承诺测试的解决方案,但到目前为止我没有尝试过任何工作(或者我执行错误)。在我检查期望之前如何确保 .then 完成执行?
【问题讨论】:
标签: javascript ajax testing mocha.js sinon