Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试RESTAPI模拟http服务器_Java_Spring Boot_Junit_Mocking_Mockito - Fatal编程技术网

Java 测试RESTAPI模拟http服务器

Java 测试RESTAPI模拟http服务器,java,spring-boot,junit,mocking,mockito,Java,Spring Boot,Junit,Mocking,Mockito,我想测试一个连接到Github api的应用程序,下载一些记录并对它们做一些处理。 我想要一个模拟对象,我做了类似的事情: @SpringBootTest public class GithubApiTest { GithubApiClient githubApiClient; @Mock HttpClient httpClient; HttpRequest httpRequest; @Value("response.json")

我想测试一个连接到Github api的应用程序,下载一些记录并对它们做一些处理。 我想要一个模拟对象,我做了类似的事情:

@SpringBootTest
public class GithubApiTest
{
    GithubApiClient githubApiClient;

    @Mock
    HttpClient httpClient;

    HttpRequest httpRequest;

    @Value("response.json")
    private String response;

    @BeforeTestClass
    void init() throws IOException, InterruptedException {
        HttpRequest request = HttpRequest.newBuilder()
                .GET()
                .uri(URI.create("https://api.github.com/repos/owner/reponame"))
                .build();
        githubApiClient = new GithubApiClient(httpClient);
        Mockito.when(httpClient.send(request, HttpResponse.BodyHandlers.ofString())).thenReturn(<here>
        );

        githubApiClient = new GithubApiClient(httpClient);
    }
}
@SpringBootTest
公共类测试
{
GithubApiClient GithubApiClient;
@嘲弄
HttpClient-HttpClient;
HttpRequest HttpRequest;
@值(“response.json”)
私有字符串响应;
@课前
void init()引发IOException,InterruptedException{
HttpRequest请求=HttpRequest.newBuilder()
.GET()
.uri(uri.create(“https://api.github.com/repos/owner/reponame"))
.build();
githubApiClient=新的githubApiClient(httpClient);
Mockito.when(httpClient.send(request,HttpResponse.BodyHandlers.ofString())。然后返回(
);
githubApiClient=新的githubApiClient(httpClient);
}
}
看起来不错吧?我应该在return中输入什么(它需要一个HttpResponse,但我不知道如何创建它)。谢谢你的回答。如果你有更好的想法,我将不胜感激

更新:
字符串响应是一个示例响应

您可以创建HttpResponse类型的模拟响应。 mockedResponse的状态代码为200,响应主体为“ExampleOfResponseBody”,它是您请求的字符串类型

import java.net.http.HttpResponse;


HttpResponse<String> mockedResponse = Mockito.mock(HttpResponse.class);
Mockito.when(mockedResponse.statusCode()).thenReturn(200);
Mockito.when(mockedResponse.body()).thenReturn("ExampleOfAResponseBody");
    
Mockito.when(httpClient.send(request, HttpResponse.BodyHandlers.ofString())).thenReturn(mockedResponse);
       
导入java.net.http.HttpResponse;
HttpResponse mockedResponse=Mockito.mock(HttpResponse.class);
Mockito.when(mockedResponse.statusCode())。然后返回(200);
Mockito.when(mockedResponse.body())。然后返回(“exampleofResponseBody”);
Mockito.when(httpClient.send(request,HttpResponse.BodyHandlers.ofString())。然后返回(mockedResponse);