首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在使用@WebFluxTest测试的控制器中使用WebClient会抛出java.lang.IllegalArgumentException: URI不是绝对的

。这个错误通常是由于在使用WebClient时传递了一个相对路径的URI导致的。

WebClient是Spring WebFlux框架提供的用于进行非阻塞的HTTP通信的客户端工具。在测试控制器时,可以使用@WebFluxTest注解来模拟WebFlux环境,并自动配置相关的Bean。

当在测试控制器中使用WebClient时,需要注意以下几点:

  1. 确保传递给WebClient的URI是绝对路径。相对路径的URI会导致IllegalArgumentException异常。可以使用UriComponentsBuilder来构建绝对路径的URI,或者直接使用完整的URL。
  2. 在测试控制器中,可以使用@AutoConfigureWebTestClient注解来自动配置WebTestClient,用于发送HTTP请求并接收响应。WebTestClient是Spring WebFlux提供的用于测试WebFlux应用程序的工具。
  3. 在测试控制器中,可以使用@MockBean注解来模拟依赖的服务或组件。这样可以在测试中控制依赖的行为,以便更好地进行单元测试。

以下是一个示例代码,展示了如何在使用@WebFluxTest测试的控制器中正确使用WebClient:

代码语言:txt
复制
@RunWith(SpringRunner.class)
@WebFluxTest(MyController.class)
public class MyControllerTest {

    @Autowired
    private WebTestClient webTestClient;

    @MockBean
    private MyService myService;

    @Test
    public void testGet() {
        // 模拟myService的行为
        when(myService.getData()).thenReturn(Mono.just("Hello"));

        // 发送GET请求并验证响应
        webTestClient.get().uri("/api/data")
                .exchange()
                .expectStatus().isOk()
                .expectBody(String.class).isEqualTo("Hello");
    }
}

在上述示例中,我们使用@WebFluxTest注解来测试MyController,并使用@MockBean注解来模拟MyService。在测试方法testGet中,我们发送了一个GET请求,并验证了响应的状态码和内容。

需要注意的是,在使用WebClient时,确保传递的URI是绝对路径,避免抛出IllegalArgumentException异常。

相关搜索:使用WebFlux的Spring boot在测试中总是抛出403状态使用Java URI.create在HDFS中写入带空格的文件名会导致使用IllegalArgumentException失败在使用@ testing - ForwardRef /react测试使用react-spring设置动画的组件时,会因为更新react而抛出警告谷歌操作中的MediaObject在使用测试模拟器时抛出错误使用所在页面的控制器而不是在ActionLink中设置的控制器进行NavBar如何使用Jest在typescript中模拟服务对测试控制器的响应如何使用JUnit5在Micronaut中模拟控制器测试中的服务类?在group by之后使用R中的Levene测试时出错[错误:不是数值变量]在vs test explorer中运行XUnit测试时,CSLAs WCF的使用会导致模拟异常。使用react jest测试在requireJS中创建的组件,抛出错误:未定义ReferenceError: define无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com如何解决“定义并抛出专用异常,而不是使用泛型异常。”在我的代码中在需要存储反应式代码输出的测试中,如何使用StepVerifier而不是block()?如何在视图中使用通过ajax接收的响应,而不是在控制器中编写HTML在使用moment-timezone的Angular 2服务中测试方法时,获取tz不是函数错误如何仅使用回调(无承诺、异步/等待)在异步代码(从数据库读取)中测试Mocha中的“抛出错误”?测试在TestLab中失败,但是当从gradle传递runner的参数并在我的androidTest中使用它们时,会传入本地如何在Swift 5中点击Tableview行时使用Xib (而不是StoryBoards)在SideMenu控制器中设置UINavigationController以推送新的ViewController在Django测试中,为什么我需要使用<Model>.objects.get()而不是<Model>.objects.create()返回的内容?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券