2016-06-18 13 views
0

私はEJBのテストにMockitoを使いたいと思います。 get()メソッドはデータベースクエリの結果を返し、transformedGet()はセッションBeanのビジネスロジックを実行します。Mockedメソッドは、期待値ではなくnullを返します。

mockFoo.get()が直接呼び出された場合、正常に動作します。 しかし、mockFoo.transformedGet()get()メソッドを呼び出すと、期待値ではなくヌルを返します。

私はビジネスロジックをテストし、データベースクエリを分離したいと思います。 Mockitoでこれを行うことは可能ですか?テストへ

クラス:

public class Foo { 
    public String get() { 
     return "get"; 
    } 

    public String transformedGet() { 
     return "transformed" + get(); 
    } 
} 

テスト:

@Test 
public void mockitoTest() { 
    Foo mockFoo = Mockito.mock(Foo.class); 
    String expected = "test"; 

    Mockito.when(mockFoo.get()).thenReturn(expected); 

    String actual = mockFoo.get(); 
    Assert.assertEquals(actual, expected); 
    String transformed = mockFoo.transformedGet(); 
    Assert.assertEquals(transformed, "transformed" + expected); 
} 

答えて

0

あなたがテスト中のクラスをからかっています。すべてのメソッドは、あなたが返すべきものをMockitoに伝えていないので、デフォルトでnullを返す、transformedGet()を含む、嘲笑されます。

ベストプラクティスは、テスト中のクラスに注入された別のクラスにget()を持つことです。あなたのテストでは、テスト対象のクラスではなく、この注入された依存関係を模擬します。

ドキュメントで説明されているようにspyまたはpartial mockを使用することもできますが、これは理想的ではありません。

関連する問題