模拟一系列对不同方法的调用

时间:2019-12-16 14:19:23

标签: java mocking mockito

我想单元测试一个类,该类以某种协议从流中读取数据。这将需要以特定顺序在流上使用不同的read()方法。 有没有办法像这样模拟流:

MyClass readFrom(InputStream in) {
  byte b = in.readByte();
  int c = in.readInt();
  byte b2 = in.readByte();
  return MyClass(b, c, b2);
}

MyInputStream in = Mockito.mock(MyInputStream.class);
when(in.readByte()).thenReturn(0x01);  // 0
when(in.readInt()).theReturn(0xDEADBEEF);  // 1
when(in.readByte()).thenReturn(0x00);  // 2

我发现的唯一-丑陋-的方法是:

MyInputStream in = Mockito.mock(MyInputStream.class);
when(in.readByte())
  .thenReturn(0x01) // 0
  .thenReturn(0x00); // 2
when(in.readInt()).thenReturn(0xDEADBEEF); // 1

0 个答案:

没有答案