【问题标题】:TDD to design a service using a data repository使用数据存储库设计服务的 TDD
【发布时间】:2015-12-24 16:37:05
【问题描述】:

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

【问题讨论】:

    标签: spring unit-testing jpa interface tdd


    【解决方案1】:

    使用 Spring 的测试支持而不是模拟 savesaveAndFlush。然后用@Transactional 注释您的测试,Spring 将使用您的测试用例启动事务,并在测试用例完成时将其返回。 (当然你不能在测试调用的代码中开始一个新的Transation(例如propgation=NEW)。

    @见Spring Reference Chapter 14.5.6 Transaction management (Test)

    【讨论】:

    • 所以你建议对这种情况进行集成测试?
    • 是的,当 Repositoy 部分是被测服务方法的一个非常相关的部分时,使用删除大部分相关部分的 mock 对其进行测试是没有用的 - 如果存储库不相关,然后我将实现存储库接口的假(非模拟)实现并将其用于测试。
    猜你喜欢
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多