简体   繁体   English

通过Wiremock存根get请求将引发错误

[英]Stubbing a get Request via Wiremock is throwing an error

I am trying to setup a wiremock server to unit test a class that makes a get http call. 我正在尝试设置一个Wiremock服务器以对进行get http调用的类进行单元测试。 I was able to successfully setup a mock server, however when I am trying to stub a request I am experiencing an error. 我能够成功设置一个模拟服务器,但是,当我尝试对请求进行存根处理时,我遇到了错误。 I am extremely new to WireMock and this seems like a pretty straight forward thing. 我对WireMock极为陌生,这似乎很简单。 Please advise: 请指教:

@Test
public void testMethod{
.........
    WireMockServer wireMockServer = new WireMockServer(8089);
    wireMockServer.start();

    stubFor(get(urlEqualTo("/api/get-magic"))
        .willReturn(aResponse()
            .withHeader("Content-Type", "application/json")
            .withBody("{\"currently\":{\"windSpeed\":12.34}}")));
........
    wireMockServer.start();

}

StackTrace: 堆栈跟踪:

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
 at [Source: <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Error 403 No valid crumb was included in the request</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /__admin/mappings. Reason:
<pre>    No valid crumb was included in the request</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>

</body>
</html>
; line: 1, column: 2]

    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1906)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:749)
    at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3850)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3799)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2858)
    at com.github.tomakehurst.wiremock.common.Json.read(Json.java:50)
    at com.github.tomakehurst.wiremock.client.HttpAdminClient.safelyExecuteRequest(HttpAdminClient.java:431)
    at com.github.tomakehurst.wiremock.client.HttpAdminClient.executeRequest(HttpAdminClient.java:399)
    at com.github.tomakehurst.wiremock.client.HttpAdminClient.addStubMapping(HttpAdminClient.java:133)
    at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:292)
    at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:287)
    at com.github.tomakehurst.wiremock.client.WireMock.givenThat(WireMock.java:106)
    at com.github.tomakehurst.wiremock.client.WireMock.stubFor(WireMock.java:110)
    at com.move.lead.la.service.allocation.ods.OdsTest.testGetOdsDataLive(OdsTest.java:156)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
    at org.testng.TestNG.run(TestNG.java:1031)
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123)

You need to call WireMock.configureFor(8089); 您需要调用WireMock.configureFor(8089); so that the static DSL is configured for port 8089. Currently it'll be defaulted to 8080, which is where you're running Jenkins by the look of it. 这样就为端口8089配置了静态DSL。目前,默认情况下它将默认为8080,从外观上看,这就是运行Jenkins的地方。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM