1

我正在围绕我的管道构建一些测试,特别是我有两个分支(一个考虑错误,另一个成功),在错误方面我有一个递增计数器(ScioMetrics.counter("MetricName").inc())并且在为另一个分支构建测试时我想要断言错误计数器为 0。

JobTest.
 ...
.counter(ScioMetrics.counter("MetricName"))(_ shouldBe 0)
 ...

当测试成功运行时,我收到一条NoSuchelementException消息,说明未找到该指标,因为它可能没有在管道内被访问,这没关系,因为我可以断言引发了异常,但是。难道不应该有一种“更好”的测试方式吗?

谢谢!

4

1 回答 1

0

由于 Beam 度量 API 设计,将生成一个未在转换内部触及的计数器,NoSuchElementExcception因为该名称从未注册过。

用于ScioContext#initCounter解决此问题。它基本上运行一个虚拟map转换以将每个计数器初始化为 0。 https://github.com/spotify/scio/blob/master/scio-core/src/main/scala/com/spotify/scio/ScioContext.scala#L716

于 2018-09-21T09:51:28.883 回答