我想测试https://smallrye.io/smallrye-mutiny/guides/polling中的一个简单的轮询示例,并将服务的数据轮询到 Kafka 流中。
这是我要测试的类的简化示例:
@ApplicationScoped
public class ExampleScheduler {
@Inject
@RestClient
ExapleService service;
@PostConstruct
void init() {
pollSource();
}
@Outgoing("sensor_data_out")
Multi<String> pollSource() {
Uni<String> stream = service.getString()
.runSubscriptionOn(Infrastructure.getDefaultExecutor());
return stream.repeat().withDelay(Duration.ofSeconds(3))
.indefinitely();
}
}
Run Code Online (Sandbox Code Playgroud)
这是测试类:
@QuarkusTest
class ExampleSchedulerTest {
@Inject
ExampleScheduler classToTest;
@InjectMock
ExampleService mockService;
@BeforeEach
void setUp() {
when(mockService.getString()).thenReturn(Uni.createFrom().item("ANSWER"));
}
@Test
void pollSource() {
final Multi<String> stream = classToTest.pollSource();
AssertSubscriber<String> subscriber = stream.subscribe().withSubscriber(AssertSubscriber.create(1));
subscriber.assertCompleted()
.assertItems("ANSWER");
}
}
Run Code Online (Sandbox Code Playgroud)
我的实际例子的错误日志是:
我试图依靠 Quarkus 测试容器来提供 Kafka 实例
java.lang.AssertionError: No completion (or failure) …Run Code Online (Sandbox Code Playgroud)