Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring TDD使用数据存储库设计服务_Spring_Unit Testing_Jpa_Interface_Tdd - Fatal编程技术网

Spring TDD使用数据存储库设计服务

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将用

您将如何设计一个可能使用TDD下的数据存储库的服务类?例如,如果我们想定义一个接口UserStorageService和UserStorageService#save(用户用户)实现,通过jpa存储库接口将用户保存到某个数据库中?如果我甚至不知道实际调用的是哪一个,我是否应该模拟特定的save或saveAndFlush或类似的JpaReposiotory方法?

使用Spring的测试支持,而不是模拟
save
saveAndFlush
。然后用
@Transactional
注释您的测试,Spring将用您的测试用例启动事务,并在测试用例完成时将其角色还原。(当然,您不能在测试调用的代码中启动新的事务(例如使用
propgation=new


@请参见

您建议对此类情况进行集成测试?是的,当Repositoy部分是测试中的服务方法的一个非常相关的部分时,使用移除大部分相关部分的模拟对其进行测试将是无用的-如果存储库不相关,那么我将实现一个假的(非模拟)实现存储库接口,并将其用于测试。