我有一个简单的流程:
return IntegrationFlows.from(ARTIFACTORY_INPUT_CHANNEL)
.handle(WebFlux.outboundGateway(url)
.expectedResponseType(new ParameterizedTypeReference<Mono<ArtifactorySearchResponse>>() {
})
.httpMethod(GET)
.encodeUri(true))
.transform(new ArtifactorySearchResponseTransformer())
.channel(ARTIFACTORY_OUTPUT_CHANNEL)
.get();
一个简单的测试:
outputChannel.subscribe(mockMessageHandler);
inputChannel.send(new GenericMessage<>("test"));
verify(mockMessageHandler).handleMessage(argThat(m -> {
Object payload = m.getPayload();
return payload instanceof String
&& payload.toString().equals("businesses.20171203.json.gz");
}));
因为永远不会调用mockMessageHandler
而导致失败。我看了看,看了看,但是测试WebFlux.outboundGateway
完全没有例子。 Spring集成确实有很多例子,但这些例子几乎没用,因为它们
WebFlux
。答案 0 :(得分:1)
与往常一样,查看Spring源代码,如果经常比等待帮助更有效率。事实证明,我错过了一些事情:
expectedResponseType
不应该是被动的发布者,只是我的DTO /域对象或其中的一些集合。