Quarkus Amazon Lambda 扩展和测试多个处理程序

Sho*_*gan 7 quarkus

我有一个 Quarkus 项目,其中有几个不同的 Lambda 处理程序。

为了“部署”或“选择”要使用的处理程序,文档指出我们应该相应地设置 application.propertiesquarkus.lambda.handler设置或QUARKUS_LAMBDA_HANDLER环境变量。

例如

quarkus.lambda.handler=my-handler
Run Code Online (Sandbox Code Playgroud)

该处理程序用@Named注释命名。例如

@Named("my-handler")
Run Code Online (Sandbox Code Playgroud)

application.properties 设置或环境变量可用于选择单个处理程序以进行测试,但在尝试在项目中一次性测试多个处理程序时,我遇到了麻烦。

我尝试使用系统属性进行设置,quarkus.lambda.handler希望它能够覆盖该设置,并且还尝试使用我的测试设置方法(@BeforeAll)修改实时 JVM 系统环境变量,但是我认为测试运行将环境变量缓存在启动,因此在测试会话期间修改内容不起作用。

是否有一种已知或有效的方法可以在项目中测试多个 quarkus lambda 函数处理程序,而无需每次我想测试不同的处理程序时都编辑 application.properties 文件?

小智 3

如果我正确理解你的问题,你可以使用QuarkusTestProfile只实现这个接口并返回类似的东西

@Override
public Map<String, String> getConfigOverrides() {
        return Map.of("quarkus.lambda.handler", "name-of-the-handler");
}
Run Code Online (Sandbox Code Playgroud)

之后用注释您的测试@TestProfile(ClassImplementingQuarkusTestProfile),这应该足以让您运行它。

不幸的是,当您拥有多个处理程序后,您必须为所有测试设置 TestProfile。