软件测试:测试远程API或只使用模拟



假设您的网站需要调用Twitter API来执行一些任务,您有几个选项:

  1. 仅使用mock
  2. 在单元测试中使用mock,但在集成测试中使用生产api
  3. 只调用生产api,从不使用mock

如果您的服务依赖于外部api,那么哪种方法是最好的?

我会退一步问问自己,你想测试什么。

如果您试图孤立地测试其他代码,请使用mock(这毕竟是mock的目的)。

如果您正在尝试真正的端到端测试,请使用生产API(如果有,则使用现场测试API)。

因此,我的答案非常接近您的#2选择,但需要注意的是,您应该考虑是否需要测试来自第三方的API。有时这样做是有意义的,或者是必要的,有时是没有意义的(众所周知,它们是可靠的,或者这样做非常不方便)。

我认为第二个是最好的解决方案。我在单元测试中使用mock,在功能测试中使用生产api。我不希望单元测试使用远程api,因为我希望它们快速运行,并且我不测试该api的结果(和连接),但我希望我的Jenkins在api更改或我有连接问题或任何

时失败

使用Mock的一个优点是"负测试",例如代码如何响应API返回的某些错误条件。使用Mock可以测试100%的"可达"代码,而使用真正的API(尤其是外部提供给组织的API)会有问题。

最新更新