在重构实施承诺后,Sinon + Chai的测试失败

时间:2016-11-11 13:05:09

标签: node.js promise bluebird sinon sinon-chai

我在这个应用程序中得到了很多回调,最终成为了'回调 - 地狱'的一个很好的例子。具有200或300行和10,15个嵌套回调的方法。

然后,作为一个好的做法,我分离了大部分这些回调,然后命名并用Bluebird承诺创建更有条理的'then-chains'。

我不确切知道为什么,因为我实现的所有测试和方法彼此非常相似,同一方法的两个测试用例都失败了。

正在使用Sinon来检查next函数和DAO方法(发出Mongo查询)是否被调用。

然后我意识到这个方法的变化是我将在该方法开头运行的一些逻辑转移到了一个promise中。

对'next'的调用未被评估为true,因为测试没有等待承诺完成并错误地返回。

这是测试中显示不良行为的部分:

var nextSpy = sinon.spy();
var methodSpy = sinon.spy(my_controller.options.dao, "findAsync");

my_controller.sendMail(req, res, nextSpy);

expect(methodSpy.called).to.be.true;
expect(sendMailSpy.called).to.be.false;

我已经改变了控制器方法,但基本上,我有一个承诺的逻辑。把它解决了问题。

0 个答案:

没有答案
相关问题