2012-06-01 10 views
6

Il metodo che voglio provare sta chiamando un metodo finto con argomenti diversi:JMock - diverse invocazioni con diversi argomenti

public void methodToTest(){ 
    getMock().doSomething(1); 
    getMock().doSomething(2); 
    getMock().doSomething(3); 
} 

Nel mio test di unità Vorrei sapere, se methodToTest davvero sta chiamando i metodi con esattamente quegli argomenti. Questo è il codice che ho scritto:

@Test 
public void myMockTest(){ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
} 

A (2) ottengo un "invocazione Unexpected" - come se non poteva distinguere diversi argomenti. Così ho provato quello:

exactly(3).of(mock).doSomething(with(Matchers.anyOf(same(1), same(2), same(3)))); 

Ma anche questo non ha fatto quello che mi aspettavo.

Infine, questo ha funzionato:

exactly(3).of(mock).doSomething(with(any(Integer.class))); 

Quindi so, che il mio metodo è stato chiamato 3 volte con qualsiasi numero intero. C'è un modo per essere sicuro, è esattamente l'argomento (i) che ho passato?

+0

Bene, il codice pubblicato funziona bene. JMock sembra avere problemi con gli oggetti cast, anche se .. Risolto finora. –

+0

quali sono i problemi di casting? Puoi darci maggiori dettagli? –

+0

Questa domanda è ora risolta? –

risposta

2

Hai circondato le aspettative con un blocco di verifica?

context.checking(new Expectations() {{ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
}}); 

Inoltre, siete a conoscenza della jMock non applica sequenza a meno che non lo si fa in modo esplicito?

+0

Ho usato la sintassi corretta e JMock sta usando una sequenza predefinita senza doverlo dire. Non sono ancora sicuro, cosa stava causando i problemi - sto usando una lista e aggiungendo un elemento. Asserire l'uguaglianza con l'oggetto e l'oggetto ottenuto da list.get (0) ha restituito false, anche se è lo stesso oggetto. Overriding equals/hashcode nella mia classe di oggetti ha risolto il problema. –

Problemi correlati