5

私はStormexecute(Tuple tuple)を初めて使用し、サブクラス化されたでメソッドをテストするボルトテストを作成する方法を模索していBaseRichBoltます。

問題は、Tuple不変であるように見え、新しいタプルを作成するためのメソッドやビルダーが表示されないことです。自分で作成するにはどうすればよいですTupleか、またはテスト入力を使用してボルトをテストするにはどうすればよいですか?

私は実際にはJavaではなくScalaを使用していますが、答えは簡単に翻訳できるはずです。

4

1 に答える 1

6

タプルオブジェクトをモックすることは、ストームスタータープロジェクトからの良い解決策です。それは簡単です:

package storm.starter.tools;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import backtype.storm.Constants;
import backtype.storm.tuple.Tuple;

public final class MockTupleHelpers {

    private MockTupleHelpers() {
    }

    public static Tuple mockTickTuple() {
        return mockTuple(Constants.SYSTEM_COMPONENT_ID, Constants.SYSTEM_TICK_STREAM_ID);
    }

    public static Tuple mockTuple(String componentId, String streamId) {
        Tuple tuple = mock(Tuple.class);
        when(tuple.getSourceComponent()).thenReturn(componentId);
        when(tuple.getSourceStreamId()).thenReturn(streamId);
        return tuple;
    }
}
于 2013-03-27T02:54:17.650 に答える