在spring-webflux中编写集成测试的最佳方式



我不希望spring自动连接web客户端测试。我让我的应用程序在opeshift上运行。除非在同一模块中找到@Spring-boot配置,否则Spring启动测试无法正常工作。我有一个不同的模块进行集成测试。

文档不够清晰,无法区分webfluxtest和springboottest

据我所知,您希望在没有测试初始化应用程序的Spring上下文的情况下,基于Spring WebFlux进行集成测试。

如果是这样的话,您可以使用WebTestClient来实现这一点。

用于测试的客户端可以绑定到真实的服务器或使用特定的控制器或功能。

在IntegrationTest文件中,您可以构建客户端并测试预期输出,如下所示:

@Test
public void testWebTestClientWithServerURL() {
WebTestClient.bindToServer()
.baseUrl("http://localhost:" + port)
.build()
.get()
.uri("/resource")
.exchange()
.expectStatus()
.isOk()
.expectBody();
}

基于该链接https://www.baeldung.com/spring-5-webclient

详细介绍:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/web/reactive/server/WebTestClient.html#bindToServer-org.springframework.http.client.reactive.ClientHttpConnector-

这就是我在类路径中没有SpringBoot的情况下对webflux应用程序进行测试的方式:

@RunWith(SpringRunner::class)
@ContextConfiguration(classes = [AppConfig::class])
class WebApiTest {
@Autowired
lateinit var context: ApplicationContext
lateinit var testClient: WebTestClient
lateinit var client: WebClient
@Before
fun setUp() {
testClient = WebTestClient.bindToApplicationContext(context).build()
client = WebClient.builder()
.clientConnector(HttpHandlerConnector(WebHttpHandlerBuilder.applicationContext(context).build()))
.build()
}
}

代码是用Kotlin编写的,但可能每个人都知道如何用Java重写它。

相关内容

  • 没有找到相关文章

最新更新