我是骆驼新手。我正在尝试编写测试用例。
public class A
{
private B b;
public void update(String s){
//calling some methods on B
.....
}
}
测试课
public class TestA extends CamelSpringTestSupport
{
private ClassPathXmlApplicationContext xmlAppContext;
@Test
public void testA()
{
String xml = "some xml";
Endpoint endpoint = context.getEndpoint("direct:incomingxml");
Exchange inExchange = endpoint.createExchange();
inExchange.getIn().setBody(xml);
inExchange.setPattern(ExchangePattern.InOnly);
template.send(endpoint, inExchange);
}
@Override
protected AbstractApplicationContext createApplicationContext()
{
xmlAppContext = new ClassPathXmlApplicationContext(
"classpath:/test-camel-context.xml");
return xmlAppContext;
}
}
spring bean xml
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:incomingxml"/>
<to uri="bean:classA?method=update"/>
</route>
</camelContext>
<bean id="b" class="B">
</bean>
<bean id="classA" class="A">
<constructor-arg index="0" ref="b" />
</bean>
有几个使用真实对象预先编写的测试用例。有什么方法可以模拟这个B类,在A类中注入并模拟一些方法吗?我只想在我的测试用例中这样做,以便预先编写的测试用例不受影响?
答案 0 :(得分:1)
您可以通过在A类中添加一个setter来解决此问题。
将加载应用程序上下文,并且将在XML中声明的bean注入A对象,但您仍然可以通过调用测试中新定义的setter来模拟B来覆盖它。
然后通过这样做,B&#39的模拟将用于您的测试而不是bean。其他测试用例不会受到影响。