2016-05-04 2 views
-1

私はJunitテストを書くのが初めてです。 、あなたがリポジトリを模擬DogRepositoryクラス(ノートのfindAll()メソッドが継承される)リポジトリを呼び出すメソッドをテストするには?

@Transactional 
    public List<Dog> getAllDogs() { 
     Iterable<Dog> allDogs = dogRepository.findAll(); 
     return Lists.newArrayList(allDogs); 
    } 

public interface DogRepository extends CrudRepository<Dog, Integer> { 


} 

答えて

1

これを注入:私は、以下のような方法をテストする方法を知っていただきたいと思いますサービスに模擬し、テスト中のメソッドを呼び出します。 Mockitoと

例:

DogRepository mockRepo = mock(DogRepository.class); 

Dog fido = new Dog("Fido"); 
Dog brutus = new Dog("Brutus"); 
when(mockRepo.findAll()).thenReturn(Arrays.asList(fido, brutus)); 

DogService service = new DogService(mockRepo); 
List<Dog> result = service.getAllDogs(); 
assertEquals(Arrays.asList(fido, brutus), result); 
+0

これは、あなたがそれについて学ぶために良いmockitoリソースのための提案を持っているか、私が探していたもののように見えますか?また、クラスにリポジトリをautowiredしていますが、私のメソッドでは、このテストで問題はありますか? – java123999

+1

公式の文書は、ほとんどのプロジェクトと同様に、学ぶのに最適な場所です。もしautowiredによってフィールドインジェクションを使用しているとすれば、MockitoはMockとInjectMocksアノテーションを使ってそのフィールドにモックを注入できますが、コンストラクタインジェクションはよりクリーンです。引数にrepoをとり、フィールドに注釈を付ける代わりに@Autowiredで注釈を付けるコンストラクタを作成します。 –

+0

ありがとうございます、これを反映するために答えを更新してください。 – java123999

関連する問題