2013-03-27 20 views
5

Jestem nowy dla Storm i staram się dowiedzieć, jak napisać test śrubowy, który testuje metodę execute(Tuple tuple) w podklasie BaseRichBolt.Tworzenie backtype.storm.tuple.Tuple do celów testowych?

Problem jest taki, że wygląda na to, że Tuple jest niezmienny i nie widzę żadnych metod ani konstruktorów, aby utworzyć nowy krotek. Jak mogę stworzyć swój własny Tuple, lub jak mogę przetestować śrubę z wejściem testowym?

Używam Scala, nie Java, ale odpowiedź powinna być łatwa do przetłumaczenia.

Odpowiedz

5

Kpiny z obiektu Tuple to dobre rozwiązanie z storm-starter project. To proste:

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

Ktoś ma inny sposób na zrobienie tego? Potrzebuję więcej niż jednego, ponieważ umieszczam je na liście i robię list.contains(). Potrzebuję wielu różnych obiektów. – markthegrea

Powiązane problemy