2013-03-27 4 views
5

Je suis nouveau à Storm et j'essaie de trouver comment écrire un test de boulon qui teste la méthode execute(Tuple tuple) dans un sous-classé BaseRichBolt.Créer un backtype.storm.tuple.Tuple à des fins de test?

Le problème est qu'il semble que Tuple est immuable et je ne vois aucune méthode ou constructeur pour créer un nouveau Tuple. Comment puis-je créer mon propre Tuple, ou comment tester un boulon avec une entrée de test? J'utilise en fait Scala, pas Java, mais la réponse devrait être facilement traduisible.

Répondre

5

Le fait de mocker l'objet Tuple est une bonne solution du storm-starter project. C'est simple:

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

Quelqu'un a un autre moyen de le faire? J'ai besoin de plus d'un car je les mets dans une liste et de faire un list.contains(). J'ai besoin de plusieurs objets différents. – markthegrea

Questions connexes