2

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

该应用程序具有以下域类

class Brochure {

  static constraints = {}

  static hasMany = [pageTags: PageTag]    
}

class PageTag {

    static constraints = {
    }

    static belongsTo = [brochure: Brochure]
}

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

@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 ()

我的示例看起来与插件文档中显示的完全相同,所以我不知道为什么这不起作用。此处提供了演示该问题的示例应用程序。

4

1 回答 1

1

已在 2.0.5 版中修复

我评论了链接的 github 问题,但这是因为grails注释如何工作的性能“修复” 。@Mock

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

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

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

于 2013-04-20T01:03:08.293 回答