赞
踩
我正在尝试使用Mockito创建一个从Mock对象返回的Mock对象.具体来说,我正在尝试模拟我的程序可以用来检索IP地址的PlayerConnection对象.
您可以找到有关此PlayerConnection对象here的更多信息.它返回一个InetSocketAddress,然后可以返回一个InetAddress,它可以返回一个带有播放器IP的String.但是我无法做到这一点,因为我的第一个(class.function()).thenReturn(returnVariable)抛出一个NullPointerException.这是我的代码:
/**
* Creates a partial mock of a connection that can return an ip address.
*
* @param String
* The IP to return when the connection gets asked.
* @return
*/
private PlayerConnection newConnection(String ipString)
{
PlayerConnection playerConnection = mock(PlayerConnection.class);
InetSocketAddress inetSocketAddress = mock(InetSocketAddress.class);
InetAddress inetAddress = mock(InetAddress.class);
when(playerConnection.getAddress()).thenReturn(inetSocketAddress);
when(inetSocketAddress.getAddress()).thenReturn(inetAddress);
when(inetAddress.getHostAddress()).thenReturn(ipString);
return playerConnection;
}
这里是堆栈跟踪,发生在(playerConnection.getAddress()).thenReturn(inetSocketAddress):
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.001 sec <<< FAILURE!
ruleResponseTest(com.github.heartsemma.communitywall.ConnectionChecks.RuleManagerTest) Time elapsed: 0.001 sec <<< ERROR!
java.lang.NullPointerException
at java.net.InetSocketAddress$InetSocketAddressHolder.access$500(InetSocketAddress.java:56)
at java.net.InetSocketAddress.getAddress(InetSocketAddress.java:334)
at com.github.heartsemma.communitywall.ConnectionChecks.RuleManagerTest.newConnection(RuleManagerTest.java:99)
at com.github.heartsemma.communitywall.ConnectionChecks.RuleManagerTest.ruleResponseTest(RuleManagerTest.java:44)
编辑:
我已将我的存根切换到doReturn().when().function()而不是when().thenReturn()来停止NullPointerExceptions,它确实如此,但现在我从Mockito获得自定义的UnfinishedStubbingExceptions.
有用的错误代码说我在某个地方有一个未完成的存根,但我不知道它在哪里.第二个doReturn()方法发生错误.
/**
* Creates a partial mock of a connection that can return an ip address.
*
* @param ipString The IP to return.
*
* @return A PlayerConnection object that can return a Host Address of the ipString but nothing else.
*/
private PlayerConnection newConnection(String ipString)
{
PlayerConnection playerConnection = mock(PlayerConnection.class);
InetSocketAddress inetSocketAddress = mock(InetSocketAddress.class);
InetAddress inetAddress = mock(InetAddress.class);
doReturn(inetSocketAddress).when(playerConnection).getAddress();
doReturn(inetAddress).when(inetSocketAddress).getAddress();
doReturn(ipString).when(inetAddress).getHostAddress();
return playerConnection;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。