我正在测试一个调用公共后端的应用程序。
我想使用wiremock来模拟来自公共后端的响应。
我在看类似的东西
- 应用程序向api.example.com发出请求,该请求是通过localhost:<端口>
- wiremock根据我提供的规则匹配URL,并返回一个mock响应
我能找到的唯一例子是将localhost请求映射到真正的后端或将模拟响应映射到localhost。
如果我理解你的问题,应用程序的行为如下:
- 应用程序向您的后端发送请求
- 您的后端通过向公共后端的转发请求进行响应
- 应用程序向公共后端发送请求
- 公共后端响应
据我所知,WireMock只有在模拟来自后端的响应,并将该响应的转发请求指向另一个模拟响应的情况下才能实现这一点。WireMock只知道在向WireMock发出请求时重定向和代理。WireMock不像中间人代理那样,监听所有请求(无论url如何(,并选择性地返回模拟响应。只有当你直接点击WireMock时,WireMock才知道代理/转发/响应。所以你需要像。。。
{
"request" : {
"url" : "/my-backend",
"method": GET
},
"response" : {
"status" : 302,
"headers" : {
"location" : "/public-backend"
}
}
}
这将向/public-backend
url返回转发请求。(根据API返回转发请求时的实际情况,上述响应可能不准确。(然后,您需要模拟请求/响应映射的
{
"request" : {
"url" : "/public-backend",
"method" : "GET"
},
"response" : {
// response
}
}
根据您运行测试所使用的内容,最好利用现有的拦截/代理功能,运行者必须侦听对某些url的请求,并以这种方式返回模拟响应。例如,TestCafe可以拦截HTTP请求并返回您的自定义响应。如果您以这种方式进行测试,那么您将只能模拟来自公共API的响应,而不能模拟来自后端的响应。