玩转单元测试之WireMock -- Web服务模拟器

发表于:2018-8-27 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Wade Xu    来源:博客园

分享:
  Examples
  新建一个测试类HTTPRequestorMockTest
  new 一个 WireMockService 配置一下 然后启动
  wireMockServer = new WireMockServer(wireMockConfig().port(8090));
  WireMock.configureFor("localhost", 8090);
  wireMockServer.start();
  在测试方法之前
  创建存根, 指明是GET方法,URL路径, Header的内容,会返回什么样的Response
  @BeforeTest
  public void stubRequests() {
  stubFor(get(urlEqualTo("/cars/Chevy"))
  .withHeader("Accept", equalTo("application/json"))
  .withHeader("User-Agent", equalTo("Jakarta Commons-HttpClient/3.1"))
  .willReturn(aResponse()
  .withHeader("content-type", "application/json")
  .withStatus(200)
  .withBody("{\"message\":\"Chevy car response body\"}")
  )
  );
  }
  一切都模拟好了,接下来开始测试了,测试方法如下
  @Test
  public void test_Get_Method() {
  String url = "http://localhost:8090/cars/Chevy";
  String method = "GET";
  String body = "";
  HashMap<String, String> headers = new HashMap<String, String>();
  headers.put("Accept", "application/json");
  headers.put("User-Agent", "Jakarta Commons-HttpClient/3.1");
  HTTPRequestor httpRequestor = new HTTPRequestor();
  Response response = null;
  try {
  response = httpRequestor.perform_request(url, method, headers, body);
  } catch (Exception e) {
  fail("Problem using HTTPRequestor to generate response: " + e.getMessage());
  }
  assertEquals(200, response.getStatusCode());
  assertEquals("Chevy car response body", response.jsonPath().get("message"));
  }

  上面的例子是GET,没有请求体,下面我们来看POST的例子
  同理 创建存根
  RequestBody假设为"Mini Cooper"
  stubFor(post(urlEqualTo("/cars/Mini"))
  .withHeader("Authorization", equalTo("Basic d8d74jf82o929d"))
  .withHeader("Accept", equalTo("application/json"))
  .withHeader("User-Agent", equalTo("Jakarta Commons-HttpClient/3.1"))
  .withRequestBody(equalTo("Mini Cooper"))
  .willReturn(aResponse()
  .withHeader("content-type", "application/json")
  .withStatus(200)
  .withBody("{\"message\":\"Mini Cooper car response body\", \"success\":true}")
  )
  );

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
32/3<123>
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号