【问题标题】:Software testing: test remote API or just use a mock?软件测试:测试远程 API 还是只使用模拟?
【发布时间】:2012-08-19 17:25:57
【问题描述】:

假设您的网站需要调用 Twitter API 来执行某些任务,您有多种选择:

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

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

【问题讨论】:

    标签: unit-testing testing mocking tdd integration-testing


    【解决方案1】:

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

    如果您尝试单独测试其他代码,请使用模拟(毕竟这是模拟的目的)。

    如果您尝试真正进行端到端测试,请使用生产 API(或实时测试 API,如果有的话)。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        使用 Mock 的一个优点是用于“负面测试”,例如您的代码如何响应从 API 返回的某些错误条件。使用 Mock 可以测试 100% 的“可访问”代码,而使用真正的 API(尤其是组织外部提供的 API)会出现问题。

        【讨论】:

          猜你喜欢
          • 2014-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-17
          • 1970-01-01
          相关资源
          最近更新 更多