Microsoft Graph Java SDK 6.4.0如何设置Wiremock URL用于集成测试?
在Microsoft Graph Java SDK 6.4.0中替换服务根地址(适配WireMock测试)
针对SDK 6.x版本移除setServiceRoot方法的情况,你可以通过以下两种方式修改服务根地址,实现WireMock替代真实API调用:
方法1:通过ClientOptions直接配置自定义服务根
在构建GraphServiceClient时,利用ClientOptions指定WireMock的服务地址,这是最直接的方式:
// WireMock本地服务地址,根据实际端口调整 String wireMockBaseUrl = "http://localhost:8080/v1.0"; ClientOptions clientOptions = new ClientOptions(); clientOptions.setBaseUrl(wireMockBaseUrl); // 构建客户端时传入配置(测试环境可使用匿名认证跳过身份验证) GraphServiceClient graphClient = GraphServiceClient.builder() .authenticationProvider(new AnonymousAuthenticationProvider()) .clientOptions(clientOptions) .buildClient();
方法2:自定义HttpClient拦截重定向请求
如果需要更灵活的URL替换逻辑(比如仅替换域名保留路径),可以自定义HttpClient拦截请求并修改目标URI:
HttpClient customHttpClient = HttpClient.createDefault().mutate() .addInterceptorFirst((HttpRequestInterceptor) (request, context) -> { URI originalUri = request.getUri(); // 替换域名部分为WireMock地址,保留原请求路径 URI wireMockUri = URI.create("http://localhost:8080" + originalUri.getPath()); request.setUri(wireMockUri); }) .build(); // 注入自定义HttpClient构建客户端 GraphServiceClient graphClient = GraphServiceClient.builder() .authenticationProvider(new AnonymousAuthenticationProvider()) .httpClient(customHttpClient) .buildClient();
测试提示
- 测试环境建议使用
AnonymousAuthenticationProvider,避免真实身份验证流程干扰测试。 - 确保WireMock已提前启动,并配置好与SDK请求匹配的Mock接口(路径、请求方法、响应内容)。
内容的提问来源于stack exchange,提问作者Nicholas DiPiazza
相关产品推荐
相关产品推荐

