2013-03-27 61 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

相關問題