我有一个静态void方法(),它调用ByteArrayOutputStream的write(byte[])。
我希望write(byte[])抛出IOException。当IOException发生时,我从method()抛出一个新的自定义异常。我试着嘲笑ByteArrayOutputStream。
TestClass
test() {
ByteArrayOutputStream outputStream = Mockito.mock(ByteArrayOutputStream.class);
Mockito.dothrow(new IOException()).when(outputStream ).write(somebyte[]);`
ClassA.method();
...
}
上面没有抛出异常,但如果我在test()中调用outputStream.write(somebyte[]),就会抛出异常。为什么它不嘲笑ClassA.method()中的ByteArrayOutputStream?
我哪里错了?
必须编写与mock中使用的somebyte[]对象相同的对象。如果参数与不同,Mockito将忽略调用
如果没有对对象的引用,请使用"any"匹配器。
Mockito.doThrow(new IOException())
.when(outputStream).write(Matchers.any(byte[].class));