【发布时间】:2016-04-29 23:51:48
【问题描述】:
我一直在 Chai 和 Sinon 中测试 Promies。通常,我使用 is wrapper 为 xhr 请求提供服务,它返回承诺。我试着这样测试它:
beforeEach(function() {
server = sinon.fakeServer.create();
});
afterEach(function() {
server.restore();
});
describe('task name', function() {
it('should respond with promise error callback', function(done) {
var spy1 = sinon.spy();
var spy2 = sinon.spy();
service.get('/someBadUrl').then(spy1, spy2);
server.respond();
done();
expect(spy2.calledOnce).to.be.true;
expect(sp2.args[0][1].response.to.equal({status: 404, text: 'Not Found'});
});
});
我的笔记:
// spy2 在期望完成断言之后被调用
// 尝试使用 var timer = sinon.useFakeTimers() 和 timer.tick(510); 没有结果
// 尝试使用 chai-as-promised - 不知道如何使用它:-(
// 无法安装 sinon-as-promised 仅在我的环境中可用的选定 npm 模块
任何想法如何修复此代码/测试此服务模块?
【问题讨论】:
-
您在断言之前调用
done(),而应该在您的测试完全完成时调用它。还有,service.get()是同步的还是异步的? -
@robertklep:好吧,我最后不知道 done()。
service.get是异步的(D3 XHR 的包装器)
标签: javascript sinon sinon-chai