2016-08-19 5 views
0

注入された依存メソッドが異なる引数タイプで2回呼び出されることを確認したいと思います。だから私のクラスがあるとしますJMockitは、異なる引数で2回呼び出される注入可能メソッドを検証します。

public class MyClass { 
    @PersistenceContext(name = "PU") 
    EntityManager entityManager; 

    public void doSomething() { 
     Customer customer = new Customer(); 
     Address customerAddress = new Address; 
     entityManager.persist(customer) 
     entityManager.persist(customerAddress); 
    } 
} 

@PersistenceContextが特定peristenceユニットのEntityManagerを注入するために、アプリケーション・サーバーを伝えるためのJava EE特定のアノテーションです。

私は、一度Customerオブジェクトを渡してもう一度Addressオブジェクトを渡すと、persistが2回呼び出されることをテストしたいと思います。次のテストクラスを作成

が渡されます。

public class MyClassTests { 
    @Tested 
    MyClass myClass; 
    @Injectable 
    EntityManager entityManager; 

    @Test 
    public void TestPersistCustomerAndAddress() { 
     new Expectations() {{ 
      entityManager.persist(withAny(Customer.class)); 
      entityManager.persist(withAny(Address.class)); 
     }}; 

     myClass.doSomething(); 
    } 
} 

しかしJMockitはwithAnyに渡されたクラス型を無視しているようです。私は基本的にwithAny(Date.class)にwithAnyを変更することができ、テストは引き続き行われます。

渡す特定のオブジェクトタイプを確認する方法はありますか?

+0

注意 'withAny(Class)'メソッドはありませんが、 'withAny(T)'メソッドのみがあります。 'T'は型キャストの必要性を避けるジェネリック型パラメータです。また、コードエディタからAPIドキュメントをすぐに参照できるように、Java IDEの設定をお勧めします。 –

答えて

3

withInstanceOf(Customer.class)を使用してみましたか?私はそれがあなたが望むことをするべきだと思います。

+0

ありがとう、これは動作します。 – ChrisM

関連する問題