2011-11-09 3 views
5

私は、いくつかのシリアル化操作を実行するメソッドをユニットテストしています。私はシリアライゼーションロジックを模擬しようと考えています。コードは以下の通りです:jMockit:Mockedオブジェクトへのコンストラクタ呼び出しをどのように期待するのですか?

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

私は、次のモックオブジェクトを作成しました:

@Mocked FileInputStream mockFIS; 

@Mocked BufferedInputStream mockBIS; 

@Mocked ObjectInputStream mockOIS; 

私はセットアップ私は上記のコンストラクタの呼び出しを期待したいNonStrictExpectations()ブロックを持っています。

私はこれをどのように達成することができますか?

答えて

10

指定された一連のインタラクションに対して、一連の期待値を指定できます。 Behavior-based testing with JMockitから:

のdoSomething()メソッドのための可能なテストがSomeCheckedExceptionが 成功した反復の任意の数の後に、スローされます場合 を行使することができます。あなたは、「ABC」の後

@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

構築されることができます。私たちは レコードに(何らかの理由のために) この2つのクラス間の相互作用のための期待の完全なセットをしたいと仮定すると、我々は以下のテストを書くかもしれませんそれは他の方法に渡されることをテストしますか? def.someMethod(abc)?参照が等しくないため、私はこれに問題があります。 –

関連する問題