Spockでジェネリックなインターフェースをモックするには

技術情報

Spockは標準機能としてスタブ/モックを内包しているのでとても便利。
以下のように簡単にモックを作成し、期待する振る舞いを定義できる。

        // モックの作成
        def mock = Mock(Foo)
        // エクスペクテーション
        1 * mock.bar() >> 99

モック/スタブの対象としたいクラスが、型引数を持つジェネリックなインターフェースやクラスだったらどうすればよいか?
以下のようにTypeTokenを使えばOKだ。(java.util.Funcitionインターフェースをスタブするコード例)

       // スタブの作成
        def stub = Stub(type: new TypeToken<Function<String, Integer>>(){}.type)
        stub.apply("BAR") >> 3

コメント

タイトルとURLをコピーしました