gpt4 book ai didi

java - 使用 mockito 在 java 中模拟套接字

转载 作者:行者123 更新时间:2023-11-30 09:54:39 27 4
gpt4 key购买 nike

我正在尝试模拟以下调用:

s.socket().bind(new InetSocketAddress(serverIPAddress_, serverPort_), 0);

这样我就可以测试当它以可预测的方式失败时其余代码的作用。我在我的测试用例中使用它:

ServerSocketChannel ssc = mock(ServerSocketChannel.class);
when(ServerSocketChannel.open()).thenReturn(ssc);
doNothing().when(ssc.socket().bind(any(), anyInt()));

但是,上面的代码不能编译:

[javac] /home/yann/projects/flexnbd/src/uk/co/bytemark/flexnbd/FlexNBDTest.java:147: cannot find symbol
[javac] symbol : method bind(java.lang.Object,int)
[javac] location: class java.net.ServerSocket
[javac] doNothing().when(ssc.socket().bind(any(), anyInt()));
[javac] ^
[javac] 1 error

知道我做错了什么吗?

最佳答案

ServerSocket 没有采用 Object 和 int 的绑定(bind)重载。它有一个重载,需要一个 SocketAddress 和一个 int。我没有使用过 Mockito,但我认为您可能需要:

doNothing().when(ssc.socket().bind(isA(ServerSocket.class), anyInt()));

编辑:最新的错误是因为您试图将 void 传递给 when 方法。 docs note , "默认情况下,mocks 上的 void 方法什么都不做。",所以你可能根本不需要这一行。

关于java - 使用 mockito 在 java 中模拟套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3202675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com