2017-07-12 9 views
0

mockitoでApacheのflinkとscalaを使用しています。 2つのテストケースをテストするために、模擬データストリームに注入された文字列を取得しようとしています。 FlinkのDataStreamオブジェクトをいくつかのデータでモックする方法がわかりません。何か案は?flocksのmockオブジェクト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) 
    }) 
    } 

} 
+0

詳細を追加してください。あなたの結果として何を達成しようとしていますか? –

+0

インテントでコードを更新しました – user8298342

+0

なぜStreamExecutionEnvironment#fromElements(myString)を使用していませんか? –

答えて

1

DataStreamをモックする必要はありません。あなたが書いたビジネスロジックをテストしたい場合は、実装した関数(MapFunction、ReduceFunctionなど)を単体テストでテストできます。

その他の場合は、ITCasesを使用して計算をテストできます。 Hereパイプラインのテスト方法の例が見つかります。 Mavenの依存関係にflink-test-utilsモジュールを追加する必要があります。