模拟复杂肥皂反应的最佳方法

时间:2011-04-02 10:16:12

标签: spring soap mocking jax-ws

我有一个想要进行单元测试的Java方法,但它需要一个包含多个列表和节点层的模拟SOAP响应。我这样做是用手写的模拟,即只是手动创建对象和设置值,但由于响应非常复杂,所以构建响应的痛苦。我有一个示例XML响应是否有一种使用XML创建模拟的简单方法?

另外我看了Mockito,它对于简单的对象看起来很好,但它似乎对复杂的响应有好处(我可能没有充分利用它)。

应用程序堆栈是Java 1.6,Spring 3并使用JAX-WS。

1 个答案:

答案 0 :(得分:0)

我这样做

@WebService 
public class MyWebService {

        @Autowired
        private ServiceBean serviceBean;

        public SomeReturedData getData(SomeInputData inputData) {
            return serviceBean.getData(inputData);
        } 
}

对于我的UnitTest,我有一个“ServiceBean”的模拟实例,我将其注入@MyWebService,并使用“in-vm”传输部署“MyWebService”,如here所述

通过使用in-vm传输,所有XML编组/解组仍然由Web服务框架完成,您只需要处理Java部分。

现在有人可能会问,为什么不直接测试“ServiceBean”,为什么需要使用in-vm传输来解析WS?好吧,有两件事,使用in-vm传输,你可以测试JAXB XML编组/解组是否正常工作,它还允许你测试你可能为你的web服务定义的任何拦截处理程序。