我来这里是因为我还没有找到解决问题的办法。我实际上是在尝试用wiremock来存根一个响应(对模拟服务的调用是通过假装客户端完成的)。我的意图是在真实的假客户机上得到虚假的响应,不是在测试中,而是在真实的应用程序中。因此,在本例中,我不是在测试中截取WireMock服务器,而是在spring boot应用程序类中,然而,在截取响应时,我遇到了一个非常奇怪的错误,到目前为止,我已经调查了很多次,但都没有成功。
这是我到目前为止使用的代码:
@EnableFeignClients
@SpringBootApplication
public class CrmApplication
implements CommandLineRunner
{
private final ConfigurableApplicationContext context;private final ConfigurableApplicationContext context;
@Autowired
public CrmApplication( ConfigurableApplicationContext context )
{
this.context = context;
}
public static void main( String[] args )
{
log.info( "Starting the CRM Validator" );
SpringApplication.run( CrmApplication.class, args );
log.info( "Finishing the CRM Validator" );
}
@Override
public void run( String... args )
{
final WireMockServer server = new WireMockServer( options().port( 8000 ) );
server.start();
log.info( "Wiremock has started in the following url: {}", "http://localhost:8000\n\n" );
String resultJson = "{\"id\":1,\"hasJudicialRecords\":false}";
MappingBuilder mappingBuilder = get( urlPathEqualTo( "/api/v1/judicial-registry/1") )
.willReturn( aResponse().withStatus( 200 )
.withHeader( "Content-Type", "application/json" )
.withBody( resultJson ) )
stubFor( mappingBuilder );
}
}
这实际上是在stubFor(mappingBuilder)中失败的
行,这是我得到的例外:
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:822) ~[spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:803) ~[spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:346) ~[spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5]
at com.crm.demo.CrmApplication.main(CrmApplication.java:31) ~[main/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-2.4.5.jar:2.4.5]
Caused by: com.github.tomakehurst.wiremock.common.JsonException: {
"errors" : [ {
"code" : 10,
"source" : {
"pointer" : "/timestamp"
},
"title" : "Error parsing JSON",
"detail" : "Unrecognized field \"timestamp\" (class com.github.tomakehurst.wiremock.common.Errors), not marked as ignorable"
} ]
}
at com.github.tomakehurst.wiremock.common.JsonException.fromJackson(JsonException.java:53) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.common.Json.read(Json.java:55) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.HttpAdminClient.safelyExecuteRequest(HttpAdminClient.java:486) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.HttpAdminClient.executeRequest(HttpAdminClient.java:454) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.HttpAdminClient.addStubMapping(HttpAdminClient.java:131) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:298) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.WireMock.register(WireMock.java:293) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.WireMock.givenThat(WireMock.java:104) ~[wiremock-jre8-2.28.0.jar:na]
at com.github.tomakehurst.wiremock.client.WireMock.stubFor(WireMock.java:108) ~[wiremock-jre8-2.28.0.jar:na]
at com.crm.demo.CrmApplication.run(CrmApplication.java:31) ~[main/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:819) ~[spring-boot-2.4.5.jar:2.4.5]
... 10 common frames omitted
所以一个问题是,wiremck只在测试中工作吗?
我已经尝试过更改JSON及其字段,但这似乎不起作用,所以如果你们中的任何人知道解决这个问题的方法会有帮助,或者如果你们也知道如何存根@FeignClient调用的api请求(不是在测试中,而是在真正的spring应用程序运行中),作为替代方法,也许也可以起作用。
非常感谢。
在server.start()
之后,您需要:
configureFor("localhost", server.port());
问题内容: 我收到以下错误,但找不到解决方法对我有用: 无法识别的字段“ GaugeDeviceId”(GaugeDevice类),未标记为可忽略 问题似乎是,该服务返回的属性名称前带有一个大写字母,而类属性则以一个下一个字母开头。 我试过了: 将propertyNames更改为第一个大写字母-相同的错误 添加到属性实例化-同样的错误 添加到相应的吸气剂-同样的错误 添加到相应的二传手-同样的错误
在laravel 5.7/mysql 5应用程序中,我想将默认值设置为timestamp字段(创建时未设置): 但我有一个错误: 通常,我对时间戳字段没有任何问题,我假设该方法- 修改块#1:我把它放在我的作曲者那里了。json: 通过谷歌搜索,我发现我还需要安装marktopper/dbal时间戳类型https://github.com/art-institute-of-chicago/data
我在雪花中有一个字符串值如下;
所以,这个问题一直困扰着我,我似乎无法解决它。出现的错误是: 未捕获错误:语法错误,无法识别的表达式:[{“类型”:“标题”,“子类型”:“h1”,“标签”:“另一个测试表单”},{“类型”:“复选框组”,“标签”:“复选框组”,“名称”:“复选框组-1497353080484”,“值”:[{“标签”:“选项1”,“值”:“选项1”,“选定的”:true}]},{“类型”:“标题”,“子类型”:“
我正在使用GitHub提供的antlr4语法分析器和词法分析器来解析Python3中的PHP。 当我直接使用这些语法时,我的PoC代码工作: antlr试验。py 这给出了输出 当我使用以下PHP时。g4语法,我犯了很多错误: 在对pythons导入交换评论之后,我得到了这个错误 然而,当我在语法上运行antlr4工具时,我没有出错。我在这里被难住了——是什么导致了这个问题?
我试图记录iOS自动测试使用Appium检查员的指令使用教程... http://www.youtube.com/watch?v=Hv9A9WfYF4g 我的应用程序在工作区中。我使用iphonesimulator7.0构建了它,它显示了一条Success消息,然后在appium inspector上正确设置了构建应用程序的路径。但当我单击“启动”时,它会显示错误。 在它的控制台上..知道可能是什