2013-03-27 62 views
5

我是Storm的新手,正在努力研究如何编写一个螺栓测试,测试execute(Tuple tuple)方法中的子类型BaseRichBolt创建一个backtype.storm.tuple.Tuple用于测试目的?

问题是,看起来Tuple是不可变的,我没有看到任何方法或建设者来创建一个新的元组。我如何创建我自己的Tuple,或者如何测试带测试输入的螺栓?

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

回答

5

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

任何人都有另一种方式来做到这一点?我需要不止一个,因为我将它们放在List中并执行list.contains()。我需要多个不同的对象。 – markthegrea 2016-02-17 20:55:56

相关问题