2016-05-04 71 views
-1

我是新来编写Junit测试。我想知道我可以测试的方法,如下面的:如何测试调用存储库的方法?

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

DogRepository类(注的findall()方法是继承)

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了解它的建议?另外,我已经自动装配了我的方法的类中的存储库,这对测试是否有用? – java123999

+1

正如大多数项目一样,官方文档是最好的学习场所。如果通过自动装配,你的意思是你正在使用字段注入,那么Mockito可以使用它的Mock和InjectMocks注释帮助在该字段中注入一个模拟,但构造器注入更清晰。创建一个将repo作为参数的构造函数,并使用@Autowired对其进行注释,而不是注释该字段。 –

+0

谢谢,你能否更新答案来反映这一点? – java123999