kos*_*ker 5 testing spring integration-testing spring-test spring-integration
我正在尝试为我的 spring 集成流程编写集成测试。我想使用 MockRestServiceServer 记录并将传出请求(使用 http:outbound-gateway)匹配到 Rest 服务器。但是,当我调用模拟服务器的验证方法时,它没有按预期进行验证。
我按以下方式编写测试:
RestTemplate restTemplate = new RestTemplate();
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
mockServer.expect(requestTo("adfasfadf.com")).andExpect(method(HttpMethod.GET));
// Call spring integration flow here
mockServer.verify();
Run Code Online (Sandbox Code Playgroud)
当我检查 MockRestServiceServer 的 verify 方法时,它没有调用 RequestMatchers 的 match 方法,我认为这个逻辑有问题。我在这里错过了什么吗?
/**
* Verify that all expected requests set up via
* {@link #expect(RequestMatcher)} were indeed performed.
* @throws AssertionError when some expectations were not met
*/
public void verify() {
if (this.expectedRequests.isEmpty() || this.expectedRequests.equals(this.actualRequests)) {
return;
}
throw new AssertionError(getVerifyMessage());
}
Run Code Online (Sandbox Code Playgroud)
我以前没有使用过MockRestServiceServer,但看起来这是一个很棒的功能。感谢您指出这一点!
无论如何,根据它的源代码我们有:
public static MockRestServiceServer createServer(RestTemplate restTemplate) {
Assert.notNull(restTemplate, "'restTemplate' must not be null");
MockRestServiceServer mockServer = new MockRestServiceServer();
RequestMatcherClientHttpRequestFactory factory = mockServer.new RequestMatcherClientHttpRequestFactory();
restTemplate.setRequestFactory(factory);
return mockServer;
}
Run Code Online (Sandbox Code Playgroud)
请注意RequestMatcherClientHttpRequestFactory。
因此,RequestMatchers只有当您使用修改后的RestTemplate.
因此你必须将它注入到你的<int-http:outbound-gateway>. 或者更好地共享RestTemplate该网关和 this 之间的实例MockRestServiceServer。
| 归档时间: |
|
| 查看次数: |
9076 次 |
| 最近记录: |