调用方法我有以下里面的类和方法的Mockito:内部方法
public class A extends B implements C{
public void validateTicketGrantingTicket(final TicketGrantingTicket ticketGrantingTicket) throws InvalidTicketException {
if (ticketGrantingTicket != null)
{
if (!ticketGrantingTicket.getHostDomain().equalsIgnoreCase(getServerName()))
{
throw new InvalidTicketException();
}
}
}
public String getServerName()
{
String serverName = "";
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
if (request != null)
{
serverName = request.getServerName().toLowerCase();
}
return serverName;
}
}
现在我写ATEST类和嘲讽类A.
public class ATest {
private A a;
@Before
public void init(){
A = mock(A.class);
when(A.getServerName()).thenReturn("phoenix.edu.abc");
}
@Test
public void validateTicketGrantingTicketTest() throws InvalidTicketException{
a = new A();
ticketGrantingTicket = new
TicketGrantingTicketImpl("test",testUtils.getAuthentication(), new
NeverExpiresExpirationPolicy());
a.validateTicketGrantingTicket(ticketGrantingTicket);
}
模仿对象是给我的空指针异常为getServerName()方法而不是字符串“phoenix.edu.abc”
呀喜欢2类重构,最好是有diferent responsabilities班,早于具有多个reponsabilities类,(它会导致不可维护的代码) – Brice 2012-01-01 11:12:29