2010-05-26 95 views
7

我试图写一个测试该类其所谓的接收器:需要与写作测试帮助

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!"); 
       } 
     } 

下面是测试:

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

注意:接收器实例Receiver类(真正的不是模拟),处理器是Processor类(真正不模拟)的实例,它处理人(People类的模拟对象)。 GetId是一个String不是int方法,并不是错误的。

测试失败: person.getId()的调用意外

我使用JMock的任何帮助,将不胜感激。正如我所理解的,当我将这种方法称为get方法来正确执行时,我需要模拟person.getId(),并且我一直在圈圈内徘徊一段时间,现在可以获得任何帮助。

回答

4

如果我理解正确,你必须移动receiver.get(person);在context.checking的范围之后 - 因为这是您的测试的执行而不是设定期望。所以给这个一来一去:

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

谢谢,与此相同的处理。我其实解决了一个问题,现在我会回答问题,我犯了几个错误。 – London 2010-05-26 12:21:26

1

此外,你应该使用允许()而不是ATLEAST(1),因为你在这里磕碰人物对象。最后,如果Person只是一个值类型,那么使用这个类可能会更好。