我是Spring集成的新手,我想为我的应用程序编写单元测试用例。我正在开发一个应用程序,其中其他系统将使用XML输入来调用集成接口,我们将使用XSLT转换输入XML,然后将其调用到其他系统,并将响应发送给调用者。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
xmlns:int-http="http://www.springframework.org/schema/integration/http"
xmlns:int-xml="http://www.springframework.org/schema/integration/xml"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.2.xsd
http://www.springframework.org/schema/integration/xml http://www.springframework.org/schema/integration/xml/spring-integration-xml-4.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms-4.2.xsd
http://www.springframework.org/schema/integration/http http://www.springframework.org/schema/integration/http/spring-integration-http-4.2.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-5.0.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>application.properties</value>
<value>application-${spring.profiles.active}.properties</value>
</list>
</property>
</bean>
<bean id="MessagePrinter" class="com.oms.integration.messagelogger.MessagePrinter"></bean>
<int:channel id="logIncommingCaptureRequestChannel"></int:channel>
<int:channel id="transformedCaptureRequestToCardinalChannel"></int:channel>
<int:channel id="incommingCaptureRequestToCardinal"></int:channel>
<int:channel id="CaptureRequestToCardinalChannel"></int:channel>
<int:channel id="logCaptureResponseFromCardinal"></int:channel>
<int:channel id="transformCaptureResponseFromCardinal"></int:channel>
<int:channel id="logTransformResponseFromCardinal"></int:channel>
<int:channel id="ResponseFromCardinalToYantraChannel"></int:channel>
<int-http:inbound-gateway request-channel="logIncommingCaptureRequestChannel" supported-methods="POST" path="/fp075" reply-channel="ResponseFromCardinalToYantraChannel"/>
<int-http:outbound-gateway request-channel="CaptureRequestToCardinalChannel" url="${Paypal_Url}={data}" expected-response-type="java.lang.String" http-method="GET" reply-channel="logCaptureResponseFromCardinal">
<int-http:uri-variable name="data" expression="payload"/>
</int-http:outbound-gateway>
<int:service-activator ref="MessagePrinter" input-channel="logIncommingCaptureRequestChannel" method="printIncommingCaptureRequestFromYantra" output-channel="incommingCaptureRequestToCardinal"></int:service-activator>
<int:service-activator ref="MessagePrinter" input-channel="transformedCaptureRequestToCardinalChannel" method="printTransformedCaptureRequestFromYantraToCardinal" output-channel="CaptureRequestToCardinalChannel"></int:service-activator>
<int:service-activator ref="MessagePrinter" input-channel="logCaptureResponseFromCardinal" method="printCaptureResponseFromCardinal" output-channel="transformCaptureResponseFromCardinal"></int:service-activator>
<int:service-activator ref="MessagePrinter" method="printTransformedResponseFromCardinal" input-channel="logTransformResponseFromCardinal" output-channel="ResponseFromCardinalToYantraChannel"></int:service-activator>
<int-xml:xslt-transformer
input-channel="incommingCaptureRequestToCardinal"
xsl-resource="classpath:/templates/FP075/DSW_XSLT_YANTRA_To_Paypal_Capture_Request_FP075.xslt"
output-channel="transformedCaptureRequestToCardinalChannel"
id="TransformIncommingCaptureRequest">
<int-xml:xslt-param name="MsgType"
value="${PP_Cardinal_MsgType_FP075}" />
<int-xml:xslt-param name="Version"
value="${PP_Cardinal_Version}" />
<int-xml:xslt-param name="ProcessorId"
value="${PP_Cardinal_ProcessorId}" />
<int-xml:xslt-param name="MerchantId"
value="${PP_Cardinal_MerchantId}" />
<int-xml:xslt-param name="TransactionPwd"
value="${PP_Cardinal_TransactionPwd}" />
</int-xml:xslt-transformer>
<int-xml:xslt-transformer
id="transformCaptureResponse"
input-channel="transformCaptureResponseFromCardinal"
xsl-resource="classpath:/templates/FP075/DSW_XSLT_YANTRA_To_Paypal_Capture_Response_FP075.xslt"
output-channel="logTransformResponseFromCardinal">
</int-xml:xslt-transformer>
</beans>
答案 0 :(得分:0)
由于您有{% set path = '' %}
{% if template == 'foo.twig' %}
{% set path = 'path/to/foo' %}
{% elseif template == 'bar.twig' %}
{% set path = 'path/to/bar' %}
{% endif %}
{% for i in 0..3 %}
<a href="http://www.example.com/{{ path }}/{{ i }}">{{ i }}</a>
{% endfor %}
和<int-http:inbound-gateway>
,所以我建议您看一下Mock Spring MVC:https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#spring-mvc-test-framework
服务器端可能是这样的:
<int-http:outbound-gateway>
对于客户端,您需要使用@RunWith(SpringRunner.class)
@WebAppConfiguration
@DirtiesContext
public class MyTests {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
this.mockMvc =
MockMvcBuilders.webAppContextSetup(this.wac)
.build();
}
之类的内容将MockMvcClientHttpRequestFactory
注入HttpRequestExecutingMessageHandler
中。
因此,最后,您的主要配置是相同的,所有流结构均保持不变。您通过<int-http:outbound-gateway>
发送模拟请求,并在流程处理后期望响应。