【发布时间】:2020-01-13 17:38:24
【问题描述】:
我有一个具有以下逻辑的 API:
- 从 Kafka 消费。
- 处理记录。
- 如果处理成功,请更新数据库。
- 如果处理失败,则将其推送到 Kafka 主题。
- 如果推送到 Kafka 主题失败,则提交。
- 如果记录处理成功,则提交。
- 如果提交失败,则记录并继续使用下一个事件。
我正在为此 API 编写 BDD。目前,我觉得我正在测试太多场景:
- ProcessingFailed -> 数据库未更改 -> 应将事件推送到 Kafka -> 应提交。
- Kafka 推送失败 -> 应该提交。
- 提交失败->(怎么办?要检查日志是否打印正确吗?)
- 快乐路径 -> 数据库已更新 -> Kafka 主题不包含事件 -> 提交成功。
我的问题是,测试此类副作用的正确方法是什么?
现在假设我的流程步骤由三个步骤组成:
- 从数据库中获取。
- 进行 HTTP 调用。
现在假设我通过关闭数据库来模拟“处理失败”。现在我还需要测试是否没有进行 HTTP 调用吗?
【问题讨论】:
标签: unit-testing testing tdd integration-testing bdd