Spring TDD使用数据存储库设计服务
您将如何设计一个可能使用TDD下的数据存储库的服务类?例如,如果我们想定义一个接口UserStorageService和UserStorageService#save(用户用户)实现,通过jpa存储库接口将用户保存到某个数据库中?如果我甚至不知道实际调用的是哪一个,我是否应该模拟特定的save或saveAndFlush或类似的JpaReposiotory方法?使用Spring的测试支持,而不是模拟Spring TDD使用数据存储库设计服务,spring,unit-testing,jpa,interface,tdd,Spring,Unit Testing,Jpa,Interface,Tdd,您将如何设计一个可能使用TDD下的数据存储库的服务类?例如,如果我们想定义一个接口UserStorageService和UserStorageService#save(用户用户)实现,通过jpa存储库接口将用户保存到某个数据库中?如果我甚至不知道实际调用的是哪一个,我是否应该模拟特定的save或saveAndFlush或类似的JpaReposiotory方法?使用Spring的测试支持,而不是模拟save或saveAndFlush。然后用@Transactional注释您的测试,Spring将用
save
或saveAndFlush
。然后用@Transactional
注释您的测试,Spring将用您的测试用例启动事务,并在测试用例完成时将其角色还原。(当然,您不能在测试调用的代码中启动新的事务(例如使用propgation=new
)
@请参见您建议对此类情况进行集成测试?是的,当Repositoy部分是测试中的服务方法的一个非常相关的部分时,使用移除大部分相关部分的模拟对其进行测试将是无用的-如果存储库不相关,那么我将实现一个假的(非模拟)实现存储库接口,并将其用于测试。