Groovy 如何从用Geb/Spock编写的测试中捕获/模拟出站请求?

Groovy 如何从用Geb/Spock编写的测试中捕获/模拟出站请求?,groovy,spock,geb,Groovy,Spock,Geb,我们有一个场景,我们在app.local:3000上运行应用程序,通常在app.local:3000/api上调用端点 在源代码中,请求是通过Javascript发出的,Javascript具有相对url/api(即app.local:3000不在源代码中) 在测试期间,我们希望捕获/mock/stub对app.local:3000/api的所有请求,并将其指向我们称之为mock.local:3000/api的模拟服务器 Geb或Spock是否可以捕获并重新映射出站请求 我们不能修改实现代码(

我们有一个场景,我们在app.local:3000上运行应用程序,通常在app.local:3000/api上调用端点

在源代码中,请求是通过Javascript发出的,Javascript具有相对url
/api
(即app.local:3000不在源代码中)

在测试期间,我们希望捕获/mock/stub对
app.local:3000/api
的所有请求,并将其指向我们称之为
mock.local:3000/api
的模拟服务器

Geb或Spock是否可以捕获并重新映射出站请求

  • 我们不能修改实现代码(有100条不同的代码到达端点,都使用相对链接)
  • 我在Geb中尝试了baseUrl,但它似乎没有改变出站请求
  • 我尝试使用
    js.exec
    覆盖html基本标记,但脚本执行得太晚

否,无法单独使用Spock或Geb重新映射出站请求

在我自己的测试套件中,我使用dockerd nginx()作为代理,由控制

摘自nginx配置

location /api {
    # rewrite path
    rewrite /api /api-on-mock break;
    # proxy to the mock
    proxy_pass http://mock;
}
location @other {
    proxy_pass https://original;
}
然后,我们对代理运行所有测试


我听说过很多关于它的好东西,但我自己没有用过。

我很难理解这是一个Geb或Spock问题。那么,您是否可以分享一个(“M”表示最小)复制所描述的行为?有什么可以测试的吗?非常感谢你。顺便说一句,模拟应该可以在普通URI下访问,只需替换普通API即可。那么你就不需要任何黑色的重路由魔法了。路由器或门面不是模拟的。这更像是一种间谍行为。