我有静态void method(),它调用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?
我哪里错了?
答案 0 :(得分:0)
你必须在mock中使用相同的somebyte []对象。如果参数不同,Mockito会忽略调用
如果您没有对象的引用,请使用' any'匹配器。
Mockito.doThrow(new IOException())
.when(outputStream).write(Matchers.any(byte[].class));