我正在尝试使用Mockito在java.nio中模拟ByteBuffer类,以便在JUnit中进行测试。我得到java.lang.UnsupportedOperationException
我的代码看起来像 -
class TestClass {
@Mock
private ByteBuffer byteBuffer
@Before
public void setup() {
Mockito.when(byteBuffer.array()).thenReturn("some-string".getBytes()); //this line throws java.lang.UnsupportedOperationException
}
}
我应该如何模拟数组方法才能使其工作?我使用的是Java 8。
答案 0 :(得分:4)
与Sotirios Delimanolis的评论一样,您不需要模拟此类或类似byte []
等基元组成的类。
除了模拟之外,还有许多不同的test doubles(假货,间谍等),对于假货而言,这是一个更好的案例而不是模拟。
只需使用:
byteBuffer = ByteBuffer.wrap("some-string".getBytes());
答案 1 :(得分:2)
您获得java.lang.UnsupportedOperationException
,因为ByteBuffer.array()
是最终方法。因此,Mockito并没有嘲笑它。这意味着
Mockito.when(byteBuffer.array()).thenReturn("some-string".getBytes());
调用抛出异常的真实方法。