【问题标题】:Integration testing with Quarkus and Redis how do I set a state with the redis?使用 Quarkus 和 Redis 进行集成测试如何使用 redis 设置状态?
【发布时间】:2022-10-17 17:38:19
【问题描述】:

嗨,我的测试课用

@QuarkusIntegrationTest

我想运行以下测试


        given()
                .contentType(MediaType.APPLICATION_JSON)
                .pathParam("id", id)
                .when()
                .get("/user/presence/{id}")
                .then()
                .statusCode(Response.Status.OK.getStatusCode())
    }

这会获取用户的存在,并且存在存储在 redis 缓存中。

我想做一个设置步骤,在测试开始之前将存在放入我的 redis 缓存中。但是,我的 redis 缓存没有暴露在任何端点上,所以我无法通过 HTTP 调用来设置它。

我要测试的redis类是

@ApplicationScoped

这似乎是必需的,因为构造函数设置了 RedisDataSoruce

    public MyRedisCache(RedisDataSource ds) {
        this.commands = ds.string(MyClass.class);
    }

但这使我无法在集成测试中使用这个特定的类实例。那么如何在我的测试开始之前将值放入这个 redis

【问题讨论】:

    标签: java testing redis integration quarkus


    【解决方案1】:

    事实上,在@QuarkusIntegrationTest 中,不可能注入任何 bean 来提供帮助。 我建议使用库连接到 Redis 并将值直接放入缓存中。

    例如,您可以使用RedissonJedis,并将其添加到具有test 依赖范围的项目中。 (您还可以通过您用于 Redis 的 Quarkus 插件检查并使用已经包含的底层 Redis 客户端)

    然后,您可以在 @BeforeAll 方法中将代码添加到测试类,以调用库并以编程方式直接将数据添加到 Redis。

    【讨论】:

      猜你喜欢
      • 2013-04-07
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多