【问题标题】:Using LambdaClient.invoke in QuarkusTest how do I provide custom headers?在 QuarkusTest 中使用 LambdaClient.invoke 如何提供自定义标头?
【发布时间】:2021-07-27 04:35:46
【问题描述】:

我正在尝试将 Datadog 集成到 Quarkus lambda 函数中。单元测试因NullPointerException 而失败,因为 Datadog 无法从上下文中获取函数 ARN。看起来需要在 HTTP 请求中提供此标头 Lambda-Runtime-Invoked-Function-Arn

是否可以使用 QuarkusTest 自定义请求标头?我们正在使用LambdaClient.invoke

【问题讨论】:

  • 我现在要做的是在创建 DDLambda 实例之前添加一个检查。如果上下文不包含函数 ARN,则不要连接 DD lambda。

标签: java testing junit quarkus


【解决方案1】:

通常测试应尽可能接近生产运行,因此更改标头似乎不是正确的路径。

单元测试是否专注于代码的数据狗部分?

如果没有:

如果 datadog 刚刚破坏了现有的单元测试,您有多种选择来修复它:

使用@QuarkusTest,您可以模拟数据狗相关部分并注册它而不是原始的using @InjectMock

我还发现,在某些情况下,使用 @QuarkusTest 进行单元测试可能会有些棘手,而使用带有 Mockito 的普通 Junit5 可能会更简单一些,而且“魔法”更少。

如果是:

由于涉及 datadog 的大多数事情都是关于将数据发送到外部服务,因此这可能更适合集成测试而不是单元测试的范围。在这种情况下,您将需要一个测试环境,或者重新考虑是否真的需要测试外部数据收集。

【讨论】:

  • 问题是 quarkus 测试只是使用空值,所以我想让它更真实。
  • 这是有道理的,但话又说回来,人为地添加标题比完全模拟它更现实吗?它是否为您的测试增加了价值,并且它是否使代码在将来免受回归错误的影响?也就是说,您能否包含测试类,尤其是您注入组件和接收空值的部分。
猜你喜欢
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多