模拟连接问题/错误/异常

时间:2018-08-22 14:54:52

标签: java testing mocking soapui wiremock

我想模拟连接到模拟程序时应用程序异常的情况(例如javax.net.ssl)。我知道如何构造有效或无效的响应。我不知道如何应对CXF会解释的特定异常,就像异常一样。

简而言之:我想编写示例代码(或工具),以便在被询问(通过get或SOAP)时返回Java连接异常。

代码说明:

curl http://localhost:8088/myservice

作为响应,我想抛出连接异常(例如javax.net.ssl.SSLException),就像抛出Java应用程序一样。我仍然知道如何抛出异常以响应请求(例如GET)。

1 个答案:

答案 0 :(得分:0)

我找到了基于以下简单Spring Boot应用程序的解决方案 Hello World spring boot并将其修改为特定的异常(只要我们拥有可提供响应的应用程序或已知框架,它便将对其他应用程序起作用):

curl https://start.spring.io/starter.zip \
-d dependencies=web \
-d name=helloworld \
-d artifactId=helloworld \
-o helloworld.zip

解压缩helloworld.zip

然后将其粘贴到类中:

import javax.net.ssl.SSLException;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
public class HelloworldApplication {

    @RestController
    class HelloworldController {
        @GetMapping("/") //this will serve get
        String hello() throws SSLException {
            //this will land in Spring error message text
            throw new SSLException("Tested exception javax.net.ssl");
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(HelloworldApplication.class, args);
    }
}

这将返回一般的json错误(可以在servlet或应用程序的其他产生响应的部分中使用在处理后的请求中添加异常的相同技术)。

响应看起来像这样

{"timestamp":"2018-08-23T09:22:26.691+0000","status":500,"error":"Internal Server Error","message":"Tested exception javax.net.ssl","path":"/"}