IllegalStateException 运行 Grails 服务单元测试

IllegalStateException Running Grails Services Unit Tests

我有一个简单的 grails 服务:

@Transactional
class SearchService {
    def doSomething() {
        10
    }
}

通过简单的单元测试:

class SearchServiceSpec extends Specification implements ServiceUnitTest<SearchService>{

    def setup() {
    }

    def cleanup() {
    }

    void "test something"() {
        expect:
        service.doSomething() == 10
    }
}

当我运行测试时,我得到以下异常:

有人知道这是什么意思吗?

奇怪的是,如果我将 doSomething 更改为 getSomething,然后执行 service.something.

,它会起作用

我有以下版本: | Grails 版本:3.3.0 | Groovy版本:2.4.11 | JVM 版本:1.8.0_60

这是因为 getter 方法没有应用事务行为。要测试事务方法,您需要有一个 GORM 实现设置。为您的测试做到这一点的最简单方法是实施 grails.testing.gorm.DataTest.