我在服务器端应用程序中使用Jest ans Supertest。我希望通过明显测试每条未覆盖的线来增加测试的覆盖范围,直到我被这个阻塞:
Activity.find()
.then((data) => {
res.json(data);
}).catch(e => res.status(400).send(e));
如果我在测试中无法重现那种错误(或者至少我不知道怎么做),我如何测试catch子句?
答案 0 :(得分:0)
在单元测试中,您应该只测试您的代码,不应该依赖第三方库。当然,这个建议应该合理应用(例如,我们必须依赖于我们正在使用的平台的编译器和现成的库)。
到目前为止,不存在json
似乎是合理的,因为它是一个可以依赖的完全建立的库。但是,只要你想测试抛出异常这样的行为,除了创建存根之外别无他法,将它以某种方式注入到你的代码中,并且在测试设置中使它在调用json
时抛出异常。
作为副作用,这会将您的代码与json
的特定实现分离,并使您的代码更加灵活。当然,与JSON实现的解耦似乎有点过头,但是仍然显示了测试驱动设计在这种情况下是如何工作的(即使代码是第一个)。