【问题标题】:IllegalStateException Running Grails Services Unit TestsIllegalStateException 运行 Grails 服务单元测试
【发布时间】:2017-09-08 04:49:19
【问题描述】:

我有一个简单的 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

【问题讨论】:

标签: java unit-testing grails grails-3.3


【解决方案1】:

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

【讨论】:

  • 如果能在“单元测试服务”部分的官方文档中记录这一点,那就太好了。由于默认情况下服务是通过事务行为生成的,因此在文档中具有重要的事实。
  • 那么我鼓励你向文档提交 PR。
  • 修复了它。我同意@bassmartin 的观点,如果没有 SO 帖子,我无法弄清楚这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多