2
我有以下类:EasyMock的匹配的对象数组
public class Listener{
@Autowired
private Handler handler;
public void receiveMessage(Message<String> message) {
String xmlMessage = message.getPayload().toString();
XStream xstream = new XStream();
xstream.processAnnotations(InfoTO.class);
infoTO = (InfoTO) xstream.fromXML(xmlMessage);
UserDetailTO[] userDetailTO = { new UserDetailTO(infoTO.getUserId(), null) };
handler.sendEmail(userDetailTO);
}
}
我的测试方法:
@Test
public void testRecieve() {
UserDetailTO[] userDetails={new UserDetailTO("zzzz",null)};
Handler handlerMock=EasyMock.createMock(Handler.class);
handlerMock.sendEmail(aryEq(userDetails));
EasyMock.expectLastCall();
EasyMock.replay(handlerMock);
ReflectionTestUtils.setField(listener, "handler", handlerMock);
String message = "Test Payload";
Message<String> finalMessage = MessageBuilder.withPayload(message).build();
listener.receiveMessage(finalMessage);
}
当我运行这个测试类,我得到断言错误意外方法调用。它的预期是因为在测试类中,插入到数组中的UserDetailTO实例与在Listener类中创建的实例不匹配。
但是,如何解决这个问题呢?
等于是没有问题的。如果两个UserDetailTO对象具有相同的用户标识和空的第二个参数,则它们是相等的。但aryEq只比较数组内对象的引用,而不是调用UserDetailTO.equals(Object)。 EasyMock中没有类似isAnyArray()的东西吗? – Ayushi
然后'infoTO.getUserId()'返回“zzzz”? – dkatzel
我的错误...你是对的,infoTO.getUserId()不返回“zzzz”。谢谢。但是我仍然想知道是否还有其他选项,比如isAnyArray()。 – Ayushi