【问题标题】:using build-test-data plugin with Grails 2在 Grails 2 中使用 build-test-data 插件
【发布时间】:2013-04-12 19:43:22
【问题描述】:

我正在尝试使用 build-test-data plugin (v. 2.0.4) 在 Grails 2.1.4 应用程序的单元测试中构建测试数据。

该应用具有以下域类

class Brochure {

  static constraints = {}

  static hasMany = [pageTags: PageTag]    
}

class PageTag {

    static constraints = {
    }

    static belongsTo = [brochure: Brochure]
}

然后在我的单元测试中,我尝试构建一个 PageTag 的实例

@Build([Brochure, PageTag])
class BrochureTests {

    void testSomething() {
       PageTag pageTag = PageTag.build()
    }
}

但它失败并出现错误

groovy.lang.MissingMethodException:没有方法签名: btd.bug.Brochure.addToPageTags() 适用于参数类型: (btd.bug.PageTag) 值:[btd.bug.PageTag : (unsaved)] 可能 解决方案:getPageTags()

我的示例看起来与plugin's docs 中显示的完全相同,所以我不知道为什么这不起作用。 here 提供了一个演示该问题的示例应用程序。

【问题讨论】:

  • 仅供参考。 Grails 2.2.0 中的测试通过。深入研究 Grails 版本的 JIRA 变更日志可能会对这个问题有所了解。
  • @dmahapatro 很高兴知道,不幸的是我还不能升级到 Grails 2.2,因为没有支持 Groovy 2.X 的 gmock 版本

标签: unit-testing grails groovy grails-plugin


【解决方案1】:

在 2.0.5 版中修复

我评论了链接的 github 问题,但这是因为 grails @Mock 注释的工作方式中的 perf "fix"

此更改几乎删除了所有使 BTD 可以在单元测试中工作的链接代码。

目前唯一的解决方法是为构建有效对象所需的域图部分中的所有域对象添加显式 @Mock 注释。

进行此更改后,测试代码会更快,这很好,但在他们的测试中了解和维护这些关系给开发人员带来了更大的负担(这是 BTD 试图避免的 :)。

【讨论】:

  • 这应该在 BTD 2.0.5 中修复。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多