This repository has been archived by the owner on Jul 16, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 167
RSocket Testing
linux_china edited this page Mar 28, 2021
·
4 revisions
在实际的项目开发中,我们需要编写对应的单元测试,如果你的项目有和RSocket Broker集成,那么这个时候可能就需要一个好的方案来支持测试的自动化。
在一些项目的测试中,如果这些测试并不涉及到和RSocket Broker之间的通讯,如你单纯测试服务Bean的实现逻辑,我们通常不会在测试阶段去连接RSocket Broker
这样可以保证测试的速度,另外我们也不需要为测试准备特定的RSocket Broker服务器。
这个时候你只需要添加rsocket.disabled=true
这一配置项即可。 你可以在src/test/resources/application.properties
文件中添加,也可以如以下代码:
@SpringBootTest
@TestPropertySource(properties = {"rsocket.disabled=true"})
public abstract class SpringBootBaseTest {
}
还有一种测试情况就是,你的应用中的一些服务是要访问RSocket Broker的,或者第三方开发包或spring-boot-starter有对RSocket Broker引用初始化对应的服务Bean, 这个时候我们需要初始化一个UpstreamManager,因为所有和RSocket Broker通讯的服务bean都是基于UpstreamManager进行初始化的,这样一个MockBean就可以完成RSocket Broker的模拟,代码如下:
@SpringBootTest
@Import(SpringBootBaseTest.RSocketTestConfig.class)
@TestPropertySource(properties = {"rsocket.disabled=true"})
public abstract class SpringBootBaseTest {
@TestConfiguration
static class RSocketTestConfig {
@Bean
public UpstreamManager upstreamManager() {
return new UpstreamManagerMock();
}
}
}
如果你测试过程需要连接RSocket Broker,然后模拟真实的服务的调用,这个时候你可能就需要一个已经启动的RSocket Broker。考虑到真实的测试场景, Alibaba RSocket Broker提供对Testcontainers的集成,也是非常简单,详情请参考:
- Testcontainers RSocket Broker module: https://github.com/alibaba-rsocket-broker/testcontainers-rsocket-broker-module
- Embedded RSocket Broker for Spring Boot testing: https://github.com/alibaba-rsocket-broker/embedded-rsocket-broker
- Binary: byte stream
- Async message
- Multi transports
- Reactive Semantics
- request/response
- request/stream
- fire-and-forget
- channel
- TCP+TLS
- WebSocket+TLS
- UDP(Aeron)
- RDMA