jMockit:如何期望构造函数调用Mocked对象?

时间:2011-11-09 05:28:19

标签: java junit jmockit

我正在对执行某些序列化操作的方法进行单元测试。我打算模拟序列化逻辑。代码如下:

ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

我创建了以下模拟对象:

@Mocked FileInputStream mockFIS;

@Mocked BufferedInputStream mockBIS;

@Mocked ObjectInputStream mockOIS;

我已经设置了一个NonStrictExpectations()块,我希望上面的构造函数调用。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:10)

您可以为给定的一组交互指定一组完整的期望值。来自Behavior-based testing with JMockit

  

doSomething()方法的可能测试可以解决这个问题   在任意数量之后抛出SomeCheckedException的地方   成功的迭代。假设我们想要(无论出于何种原因)   记录对两者之间相互作用的完整期望   这两个类,我们可以写下面的测试:

@Test
public void doSomethingHandlesSomeCheckedException() throws Exception
{
  new Expectations() {
     DependencyAbc abc;

     {
        new DependencyAbc(); // expect constructor

        abc.intReturningMethod(); result = 3;

        abc.stringReturningMethod();
        returns("str1", "str2");
        result = new SomeCheckedException();
     }
  };

  new UnitUnderTest().doSomething();
}