我目前正在尝试用Sinon + Sinon-As-Promised测试Flux,但是我很难找到相关的例子,并且无论断言如何,我的测试问题总是会返回true。
我的测试目前看起来像这样:
it('Form store should contain encounter object', function() {
var stub = sinon.stub(restService, "loadForm").resolves(mockDataEncounter.Encounter);
stub().then(function(value){
console.log('Inside frmSrv');
formStore._currentForm = value;
expect(formStore._currentForm).to.have.property('Name');
})
console.log('calling action creator');
actionCreator.loadForm("123456789012345678910003");
})
我期待发生的是 -
呼叫操作创建者 - > 操作创建者通常会进行API调用, 但在这种情况下,调用stubbed方法而不是 - > Promise是 解决后,将_currentForm设置为模拟数据,然后设置断言 检查。
然而实际发生的是:
致电行动创建者 - > 测试通过 - > 承诺解决
如果我在测试中添加完成回调函数,然后在断言后调用done,这会导致事务以我预期的顺序执行,但是如果我将期望的属性修改为" Name1"(不存在),测试失败,超时错误,而不是正确的错误,说该属性不存在。
我是否遗漏了一些根本性的东西,或者只是以完全错误的方式处理事情?
答案 0 :(得分:1)
所以在经过一些更多的讨论之后,我必须在承诺中添加一个catch,然后调用done传递错误,以便显示正确的失败消息。
it('Form store should contain encounter object', function(done) {
var stub = sinon.stub(restService, "loadForm").resolves(mockDataEncounter.Encounter);
stub().then(function(value){
console.log('Inside frmSrv');
formStore._currentForm = value;
expect(formStore._currentForm).to.have.property('Name');
done();
}).catch(function(err){
done(err);
});
console.log('calling action creator');
actionCreator.loadForm("123456789012345678910003");
})