相关疑难解决方法(0)

Grails集成测试和事务

我不明白为什么这个集成测试失败了.我可以通过删除@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

6
推荐指数
1
解决办法
6768
查看次数