我不明白为什么这个集成测试失败了.我可以通过删除@Transactional(propagation = Propagation.REQUIRES_NEW)服务方法上方的注释或通过transactional = false在集成测试中设置来获得测试
我意识到集成测试本身是在一个事务中运行的,这就是我在服务方法上得到注释的原因.
class DbTests extends GrailsUnitTestCase {
boolean transactional = true
def customerService
void testTransactionsCommit() {
def orderIds = [1, 2, 3]
orderIds.each { // lets make sure they all start out as Active
def order = Order.get(it)
order.isActive = true
order.save(flush:true, validate:true, failOnError: true)
}
customerService.cancelOrders(orderIds)
orderIds.each {
def order = Order.get(it).refresh()
assertEquals false, order.isActive
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务方法是定义的:
class CustomerService {
boolean transactional = true
@Transactional(propagation = Propagation.REQUIRES_NEW)
def cancelOrders(def orderIds) …Run Code Online (Sandbox Code Playgroud) service grails integration-testing transactions spring-transactions