我的http请求发送到此:create table tbl(ID int, `Time` time, Task varchar(10));
insert into tbl values
(1, '12:00:00', 'task1'),
(2, '12:13:00', 'task2'),
(3, '10:16:00', 'task0');
select @t := cast(null as time);
select id, task, start, end from (
select id, @t `end`, @t := `time`, `time` `start`, task from tbl
order by `time` desc
) a;
我的带有身体的http请求:
{
https://myhost.com/ap
我想通过WireMock映射此请求。
这里是WireMock的映射文件。
"Body": {
"CommandName": "GetApplicationProfile"
},
"Header": {
"Command": "GetApplicationProfile",
}
}
我这样启动wireMock:
{
"request": {
"url": "/my_host/ap",
"bodyPatterns": [
{
"contains": "GetApplicationProfile"
}
]
},
"response": {
"headers": {
"Content-Type": "application/json"
},
"status": 200,
"bodyFileName": "get_profile.json"
}
}
但是,当请求启动时,WireMock不会映射该请求。没啥事儿。 为什么?
答案 0 :(得分:0)
URL不应包含主机名。它应该只包含资源路径。
网址格式应以“ /”开头,例如/https://myhost.com/ap
。
现在,如果您在localhost上尝试此操作,则URL应该为localhost:<port>/https://myhost.com/ap
。
文件应位于src/test/resources/__files
如果没有,将给出错误文件不存在。
答案 1 :(得分:0)
您遇到的问题是,url
部分中不应包含主机名。不需要。您的示例消息可以发送,并且将使用以下规则进行匹配。
{
"request": {
"url": "/app",
"bodyPatterns": [
{
"contains": "GetApplicationProfile"
}
]
},
"response": {
"headers": {
"Content-Type": "application/json"
},
"status": 200,
"body": "ddd"
}
}
答案 2 :(得分:0)
我在这里看到2个问题: 1.您需要从映射文件中的网址中删除主机名。 2.您的请求是HTTPS,这意味着您需要使用https:--https-port 8080启动Wiremock端口,或者将请求更改为HTTP