Mockito-无法抛出异常

时间:2014-10-15 11:16:28

标签: java unit-testing exception static mockito

我有静态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?

我哪里错了?

1 个答案:

答案 0 :(得分:0)

你必须在mock中使用相同的somebyte []对象。如果参数不同,Mockito会忽略调用

如果您没有对象的引用,请使用' any'匹配器。

Mockito.doThrow(new IOException())
    .when(outputStream).write(Matchers.any(byte[].class));