Spring @Transactional - 可以测试交易数量吗?
Spring @Transactional - can one test the number of transactions?
我有一个 api class 用 @Transactional
注释,如图所示。一些方法的子集用 readOnly=true
进一步注释。在编写测试时,有没有办法验证实际发生的交易数量?考虑如果 delete
方法实现调用了 exist
方法——那么在调用 delete
的测试中应该只发生一个事务。但是,如果测试本身在调用 delete
之前调用了 exist
方法,那么应该发生 2 个事务。
@Transactional
public class AnApi {
public AnEntity create(EntityData data) {...}
public void delete(Long id) {...}
@Transactional(readOnly = true)
public boolean exists(Long id) {...}
}
虽然我知道框架以这种方式运行,但最好进行测试以检测任何未来的变化并避免潜在的意外。
应该不会太难。
Spring 使用 PlatfromTransactionManager
来管理事务。
如果您通过委托给实际的事务管理器来注册一个实现此接口的包装事务管理器,您应该能够轻松计算返回的事务的invocations/number。
我有一个 api class 用 @Transactional
注释,如图所示。一些方法的子集用 readOnly=true
进一步注释。在编写测试时,有没有办法验证实际发生的交易数量?考虑如果 delete
方法实现调用了 exist
方法——那么在调用 delete
的测试中应该只发生一个事务。但是,如果测试本身在调用 delete
之前调用了 exist
方法,那么应该发生 2 个事务。
@Transactional
public class AnApi {
public AnEntity create(EntityData data) {...}
public void delete(Long id) {...}
@Transactional(readOnly = true)
public boolean exists(Long id) {...}
}
虽然我知道框架以这种方式运行,但最好进行测试以检测任何未来的变化并避免潜在的意外。
应该不会太难。
Spring 使用 PlatfromTransactionManager
来管理事务。
如果您通过委托给实际的事务管理器来注册一个实现此接口的包装事务管理器,您应该能够轻松计算返回的事务的invocations/number。