为测试目的创建backtype.storm.tuple.Tuple?

时间:2013-03-27 02:21:24

标签: java scala testing apache-storm

我是Storm的新手,正在尝试研究如何编写一个螺栓测试来测试子类execute(Tuple tuple)中的BaseRichBolt方法。

问题是Tuple似乎是不可变的,我没有看到任何创建新元组的方法或构建器。如何创建自己的Tuple,或者如何使用测试输入测试螺栓?

我实际上使用的是Scala,而不是Java,但答案应该很容易翻译。

1 个答案:

答案 0 :(得分:6)

模拟Tuple对象是storm-starter project的一个很好的解决方案。这很简单:

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;
    }
}