【问题标题】:Unit tests and fixtures单元测试和夹具
【发布时间】:2010-05-05 10:49:30
【问题描述】:

我们有一堆单元测试来测试大量的网页和 REST API 服务。

目前,当我们的测试运行时,它会从这些页面实时提取,但这有时可能需要很长时间才能运行,而且感觉测试应该测试更多我们的代码 - 而不仅仅是依赖它们启动和响应(如果有道理..)。

保存有效的 api 响应并在设置期间通过单元测试加载它是更好的做法吗?

想法?

【问题讨论】:

  • 我很好奇随着项目的进展模拟的有效性。 BE 似乎经常发生变化并破坏了 FE,直到 QA 在 UI 中发现错误之前没有人看到它。恕我直言,确保 BE 完整性的 FE 测试是一个好主意,并且至少应该在某种程度上与您的模拟、nocks 或其他方式相关。

标签: unit-testing fixtures


【解决方案1】:

听起来你一次尝试测试太多是的。

您应该测试生成 Rest API 响应的代码(如果此代码在您的控制之下)以及完全分开使用它的代码。如果您不控制生成 API 的代码,您应该为使用它的代码提供虚假、有效的 API 答案并将它们用于您的测试。

依靠页面启动和响应听起来更像是集成测试。不过,如果您依赖外部 API,那么进行集成测试以验证 API 是否仍按您预期的方式运行总是很有趣。

【讨论】:

  • @Axelle 你是对的。三种测试类型。测试 API 服务、使用模拟 API 服务测试网页以及集成测试。
【解决方案2】:

我更愿意使用测试/模拟数据源而不是实际的实时数据源。这将使您无需实际使用网络资源即可读取数据,并提供更好的性能(取决于您的架构,切换您使用的数据源可能会或可能不会容易)。

但同样重要的是,它可以让您处理返回的数据,并让您测试边缘情况、无效数据响应等。根据您的应用程序对数据的处理方式,这可能很重要。

【讨论】:

    【解决方案3】:

    我处理这个问题的方法是使用模拟。让我们假设您有一个负责调用外部服务的类,以及一个使用这些结果的单独类。您可以创建调用服务的类的模拟,并返回您想要的任何特定结果。然后,您可以测试需要结果的类,而无需处理任何外部调用。

    http://en.wikipedia.org/wiki/Mock_object
    http://martinfowler.com/articles/mocksArentStubs.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多