如何让 WebTestClient 注销所有请求 [重复]

Posted

技术标签:

【中文标题】如何让 WebTestClient 注销所有请求 [重复]【英文标题】:How do I get WebTestClient to log out all requests [duplicate] 【发布时间】:2018-08-24 11:48:09 【问题描述】:

我的 SpringBootTest 设置是这样的

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ControllerTest 

    @Autowired
    private WebTestClient webTestClient;

    @Test
    public void postTest() 
        // Setup data
        Form form = new Form();
        form.setName("Test1");
        form.setDescription("Description1");

        // Run method
        webTestClient.post()
                .uri("/api/v1/data")
                .contentType(MediaType.APPLICATION_JSON)
                .accept(MediaType.APPLICATION_JSON)
                .syncBody(form)
                .exchange()

                .expectStatus()
                .isOk()

                .expectBody()
                .jsonPath("data.id").isNotEmpty()
                .jsonPath("data.name").isEqualTo(form.getName())
                .jsonPath("data.description").isEqualTo(form.getDescription())
                .jsonPath("data.status").isEqualTo("A");
    

我无法找到让WebTestClient 注销所有 HTTP 请求和响应的方法。

我想将WebTestClient 保留为@Autowired。可能我可以创建某种应用程序配置或配置类来执行此操作,但不幸的是我还没有找到方法。

【问题讨论】:

@thomas77 问题是他们手动实例化WebTestClient 而我想将@Autowired 保留在 【参考方案1】:

使用ExchangeFilterFunction。请参阅此帖子how to log webclient call。

使用注册的过滤器创建您自己的客户端,它应该可以工作。

【讨论】:

问题是他们手动实例化WebTestClient,而我想将@Autowired保留在 那么它应该在@Configuration类中创建并配置为一个bean,所以它可以自动装配?您有创建 bean 的任何 Spring 配置吗?如果是这样,请将其与@Bean 注释一起放在那里。

以上是关于如何让 WebTestClient 注销所有请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot WebTestClient - 如何在 graphql API 中使用 expectBody

Laravel 5 - 从他的所有设备中注销用户

如何在注销期间取消所有 NSMutableURLRequest?

当 Alamofire 请求通过身份验证时,我应该如何注销?

如何让所有导航控制器在标签栏中扎根?

Spring RequestContextHolder 和 WebTestClient