我在我的服务器端应用程序中使用 Jest 和 Supertest。我希望通过明显测试每条未覆盖的行来增加测试的覆盖范围,直到我被以下内容阻止:
Activity.find()
.then((data) => {
res.json(data);
}).catch(e => res.status(400).send(e));
如果我无法在测试中重现此类错误(或者至少我不知道如何重现),我该如何测试 catch 子句?
最佳答案
在单元测试中,您应该只测试您的代码,而不应该依赖第三方库。当然,这个建议应该合理应用(例如,我们必须依赖于我们正在使用的平台的编译器和开箱即用的库)。
到目前为止,不 stub json
似乎是合理的,因为它是一个值得信赖的成熟库。但是,一旦您想要测试抛出异常之类的行为,除了创建一个 stub ,将其以某种方式注入(inject)到您的代码中,并在测试设置中使其在调用 json
时抛出异常,就没有其他方法了。
作为副作用,这会将您的代码与 json
的特定实现分离,并使您的代码更加灵活。当然,与 JSON 实现解耦似乎有点过头了,但仍然显示了测试驱动设计在这种情况下是如何工作的(即使代码是第一个)。
关于node.js - 如果在测试过程中无法重现错误,如何测试 catch 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49887883/