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 次  |  
        
|   最近记录:  |