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

时间:2018-03-13 05:05:21

标签: groovy spock geb

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

在源代码中,请求是使用带有相对URL /api的Javascript进行的(即app.local:3000不在源代码中)。

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

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

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

1 个答案:

答案 0 :(得分:1)

不,不可能仅使用Spock或Geb重新映射出站请求。

在我自己的测试套件中,我使用dockerd nginx("nginx" from official repository)作为代理,由testcontainers-spock控制。

摘自nginx config

location /api {
    # rewrite path
    rewrite /api /api-on-mock break;
    # proxy to the mock
    proxy_pass http://mock;
}
location @other {
    proxy_pass https://original;
}

然后我们针对代理运行所有测试。

我听过很多关于betamax的好事,但我自己没有用过它。

相关问题