假设我有这个
class FooProcess extends ProcessAllWindowFunction[String,String, TimeWindow]{
override def process(context: Context, elements: Iterable[String], out: Collector[String]): Unit = ???
}
我想将一些单元测试写入过程方法,但我遇到嘲笑上下文的问题
val context = mock[Context[FooProcess]]
此导入失败(cannot resolve symbol Context
(
import org.apache.flink.streaming.api.functions.windowing.ProcessAllWindowFunction.Context
Flink中的单位测试的任何想法/最佳实践?
这里的问题是Context
是ProcessAllWindowFunction
类的内类。在Scala中,内类绑定到外部对象。因此,如果要模拟上下文并使用它来测试process()
功能,则可以做以下操作:
val foo = new FooProcess
val mock = mock[foo.Context]
foo.process(...)