将Apache flink和scala与mockito结合使用。尝试在模拟DataStream中注入一个字符串,以测试两个测试用例。我不确定如何用一些数据模拟Flink的DataStream对象。有什么想法吗?
import org.apache.commons.lang3.StringUtils
import org.apache.flink.streaming.api.scala.DataStream
import org.scalatest.FunSuite
import org.scalatest.mockito.MockitoSugar
class MockTest extends FunSuite with MockitoSugar {
test ("Test DataStream with valid string") {
var mockDataStream = mock[DataStream[String]]
// inject "hello" to this datastream
filterOutBlanks(mockDataStream)
// verify mockDataStream is not empty
}
test ("Test DataStream with empty string") {
var mockDataStream = mock[DataStream[String]]
// inject " " to this datastream
filterOutBlank(mockDataStream)
// verify mockDataStream is empty
}
def filterOutBlank(source: DataStream[String]): DataStream[String] = {
source.filter(x => {
StringUtils.isNotBlank(x)
})
}
}发布于 2017-07-13 19:15:05
你不需要嘲笑DataStream。如果您想测试您编写的业务逻辑,您可以简单地对您实现的功能(如MapFunction、ReduceFunction等)进行单元测试。
对于其他情况,您可以使用ITCases测试您的计算。Here你可以找到一个如何测试你的管道的例子。您需要将flink-test-utils模块添加到Maven依赖项中。
https://stackoverflow.com/questions/45067426
复制相似问题