小编Sch*_*zer的帖子

如何在 Quarkus 上测试 Mutiny 中的轮询模式?

我想测试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)

unit-testing vert.x apache-kafka quarkus mutiny

6
推荐指数
1
解决办法
1190
查看次数

标签 统计

apache-kafka ×1

mutiny ×1

quarkus ×1

unit-testing ×1

vert.x ×1