【问题标题】:JUnit: Mocking a http serverJUnit:模拟 http 服务器
【发布时间】:2013-10-17 13:23:25
【问题描述】:

我有一个服务,它有一个使用apache httpclient 进行休息调用的方法。我想使用junit 测试呼叫,但我不想模拟呼叫,而是模拟它正在调用的服务器

我的问题是,是否可以使用 mockwebserver 之类的东西来模拟服务器,这样如果您向特定 url 发出请求,它将从服务中获取(而不是模拟服务)而不是去转到真实服务器?

【问题讨论】:

  • 您可以使用 Jetty 或 com.sun.net.httpserver.HttpServer。但是,在我看来,这不会提高测试的质量(与使用模拟相比),但可能会影响它们的可读性和执行时间(更不用说确保测试中使用的端口尚未使用等问题)
  • 那么你会建议模拟服务并模拟对服务器的调用吗?
  • 是的,这将使您的测试成为纯粹的单元测试(不涉及协作者),但最终由您决定哪种方法效果更好并且“感觉”正确。
  • 只有在编写旨在实现 HTTP 客户端部分的代码时,才需要模拟 HTTP 服务器。但是当您使用 Apache HTTP 客户端时,您不需要这样做。您只需证明您已正确调用了 Apache 客户端代码。

标签: unit-testing rest junit mocking


【解决方案1】:

HttpClient 是一个接口,因此您可以在测试中返回一个模拟。

【讨论】:

    【解决方案2】:

    试试 Jadler (http://jadler.net),这是一个用于创建存根/模拟 http 服务器的开源库。它应该为您提供所需的一切(我是它的开发人员之一)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2021-05-14
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多