繁体   English   中英

模拟java.nio.ByteBuffer类时的java.lang.UnsupportedOperationException

[英]java.lang.UnsupportedOperationException when mocking java.nio.ByteBuffer class

我正在尝试使用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。

就像在Sotirios Delimanolis的评论中一样,你不需要模拟这个类或者像byte []这样的原语很容易组成的类。

除了模拟之外,还有许多不同的测试双打 (假货,间谍等),对于假货比假货更好。

只需使用:

byteBuffer = ByteBuffer.wrap("some-string".getBytes());

你得到一个java.lang.UnsupportedOperationException因为ByteBuffer.array()是一个最终方法。 因此,Mockito并没有嘲笑它。 这意味着

Mockito.when(byteBuffer.array()).thenReturn("some-string".getBytes());

调用抛出异常的真实方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM