需要在我的应用程序中模拟JmsTemplate进行集成测试。
在我的appcontext.xml
中<bean id="core_connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="core_jndiTemplate" />
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>
<bean id="core_jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="core_connectionFactory" />
<property name="defaultDestination" ref="core_destination" />
</bean>
<bean id="core_destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="core_jndiTemplate" />
</property>
<property name="jndiName">
<value>queue/CoreQueue</value>
</property>
</bean>
需要在testcontext.xml中模拟jmstemplete。 提前谢谢。
答案 0 :(得分:7)
或者在Spring 4的味道中;)
@Bean
public JmsTemplate jmsTemplate() {
return Mockito.mock(JmsTemplate.class);
}
正如@Stephane所说,但没有xml 但我仍然建议您使用嵌入式代理进行集成测试。因为它可以让你检查究竟是什么进入队列。
答案 1 :(得分:2)
以下情况如何?
<bean id="core_jmsTemplate" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="org.springframework.jms.core.JmsTemplate"/>
</bean>
您可能需要在测试中注入模板并配置模拟(given(...).willReturn
)。