Playframework 集成测试Play 2.4.X中的模拟外部web服务调用

Playframework 集成测试Play 2.4.X中的模拟外部web服务调用,playframework,integration-testing,playframework-2.4,Playframework,Integration Testing,Playframework 2.4,我正在使用微服务,我想为它编写集成测试。 我的微服务在端口号9000、9001上运行。所以我想测试端口9000的路由,但它在内部调用运行在9001上的服务,所以我得到连接拒绝错误,我想模拟到达9001的特定调用。 我已经试过了。看看-这让您可以模拟可以通过HTTP调用的外部服务 添加依赖项: libraryDependencies += "com.github.rest-driver" % "rest-client-driver" % "1.1.44 将以下内容添加到测试类中 @org.jun

我正在使用微服务,我想为它编写集成测试。 我的微服务在端口号9000、9001上运行。所以我想测试端口9000的路由,但它在内部调用运行在9001上的服务,所以我得到连接拒绝错误,我想模拟到达9001的特定调用。 我已经试过了。

看看-这让您可以模拟可以通过HTTP调用的外部服务

添加依赖项:

libraryDependencies += "com.github.rest-driver" % "rest-client-driver" % "1.1.44
将以下内容添加到测试类中

@org.junit.Rule
public ClientDriverRule clientDriver = new ClientDriverRule(9001);
对于每个测试方法,您可以在
clientDriver
上设置期望值,
@Rule
注释负责在测试之间重置客户端驱动程序

@Test
public void testFoo() {
   clientDriver.addExpectation(onRequestTo("/service/echo")
                               .withMethod(Method.POST)
                               .withBody("foo",
                                         "text/plain"),
                               giveResponse("bar"));

    // ...the rest of your test
}

我得到了这个“意外请求:”错误,我想是因为它要求我构造完全相同的请求。(例如,标题、内容类型、连接:“keep alive”、用户代理:“AHC/1.0”、接受:“/”
ClientDriverRequest
遵循构建器模式,因此您可以只编写一个方法来应用请求的所有样板文件,然后在测试方法中添加细节。您是否可以提供任何参考,例如,如何减少请求中不需要的数据?这些数据将出现在您的实际应用程序中,因此如果需要,您应该尝试在测试中对其建模。设置断点以从请求中提取所有数据,我试图通过一个java映射来构造像setting header这样的请求,但实际的请求和我在测试用例中创建的请求与实际请求中的连接不同:Keep alive,但在我的测试用例中,它像这样的连接:“Keep alive”。两者都有不同之处,我想这就是为什么我不能嘲笑它。