2010-05-26 13 views
7

Estoy intentando escribir una prueba para esta clase su llamada Receptor:necesita ayuda con la prueba de escritura

public void get(People person) { 
      if(null != person) { 
       LOG.info("Person with ID " + person.getId() + " received"); 
       processor.process(person); 
      }else{ 
       LOG.info("Person not received abort!"); 
       } 
     } 

Aquí está la prueba:

@Test 
    public void testReceivePerson(){ 
     context.checking(new Expectations() {{   
      receiver.get(person); 
      atLeast(1).of(person).getId(); 
      will(returnValue(String.class));   
     }}); 
    } 

Nota: receptor es la instancia de la clase Receptora (real no simulada), el procesador es la instancia de la clase Procesador (real no simulada) que procesa a la persona (objeto simulado de la clase Personas). GetId es un método String not int que no es un error.

prueba falla: invocación inesperada de person.getId()

estoy usando jMock cualquier ayuda se agradece. Como entendí cuando llamé a este get método para ejecutarlo correctamente, tengo que burlarme de person.getId(), y he estado dando vueltas en círculos por un tiempo; cualquier ayuda sería apreciada.

Respuesta

4

Si entiendo correctamente, tiene que mover la línea receiver.get (persona); después del alcance de context.checking - porque esta es la ejecución de su prueba y no establece la expectativa. Así que dar a éste una oportunidad:

@Test 
public void testReceivePerson(){ 
    context.checking(new Expectations() {{   
     atLeast(1).of(person).getId(); 
     will(returnValue(String.class));   
    }}); 
    receiver.get(person); 
} 
+0

gracias, el mismo trato con esto también. De hecho, resolví un problema, voy a publicar la respuesta ahora, cometí varios errores. – London

1

Además, se debe utilizar lo que permite() en lugar de al menos (1), ya que está apagando el objeto persona aquí. Finalmente, si Person es simplemente un tipo de valor, podría ser mejor usar la clase.

Cuestiones relacionadas