7

我正在尝试为这个名为 Receiver 的类编写一个测试:

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是Receiver类的实例(real not mock),processor是Processor类的实例(real not mock),它处理person(People类的mock对象)。GetId 是 String 而不是 int 的方法,不会出错。

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

我正在使用 jMock 任何帮助将不胜感激。据我了解,当我调用此get方法以正确执行它时,我需要模拟person.getId(),并且我已经在圈子里狙击了一段时间,现在任何帮助将不胜感激。

4

2 回答 2

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);
}
于 2010-05-26T12:07:39.587 回答
1

此外,您应该使用allow() 而不是atLeast(1),因为您在此处存根person 对象。最后,如果 Person 只是一个值类型,最好只使用类。

于 2010-06-03T20:05:54.397 回答