2011-11-09 60 views
5

我正在执行一些序列化操作的单元测试方法。我打算嘲笑序列化逻辑。代码如下:jMockit:如何期待构造函数调用Mocked对象?

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

我已经创建了如下mock对象:

@Mocked FileInputStream mockFIS; 

@Mocked BufferedInputStream mockBIS; 

@Mocked ObjectInputStream mockOIS; 

我已经建立了NonStrictExpectations()块,我想期待上述构造函数调用。

关于我如何实现这一点的任何想法?

回答

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(); 
} 
+2

后“ABC”的构造,可你测试它是否被传入其他方法? def.someMethod(ABC)?我遇到这个问题,因为引用不相等。 –

相关问题