модульное тестирование flink - невозможно установить контекст для обработки всей функции - PullRequest
0 голосов
/ 26 мая 2019

при условии, что у меня есть это

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?

1 Ответ

0 голосов
/ 26 мая 2019

Проблема в том, что Context является внутренним классом класса ProcessAllWindowFunction.В Scala внутренние классы связаны с внешними объектами.Итак, если вы хотите смоделировать контекст и использовать его для проверки функции process(), тогда вы можете сделать что-то, как показано ниже:

val foo = new FooProcess
val mock = mock[foo.Context]
foo.process(...)
...