unit-testing - 在Grails 2中使用build-test-data插件

标签 unit-testing grails groovy grails-plugin

我正在尝试使用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: No signature of method: btd.bug.Brochure.addToPageTags() is applicable for argument types: (btd.bug.PageTag) values: [btd.bug.PageTag : (unsaved)] Possible solutions: getPageTags()



我的示例看起来与plugin's docs中显示的示例完全相同,因此我不知道为什么它不起作用。演示该问题的示例应用程序可用here

最佳答案

在2.0.5版中已修复

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

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

目前解决此问题的唯一方法是,在域图中构建有效对象所需的所有域对象都添加一个显式的@Mock批注。

这次更改将使测试代码更快,这是很棒的,但是这给开发人员在测试中了解和维护这些关系带来了更大的负担(这是BTD试图避免的事情:)。

关于unit-testing - 在Grails 2中使用build-test-data插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104195/

相关文章:

java - Dagger Hilt 测试错误 - 错误 : cannot find symbol @ScopeMetadata, @QualifierMetadata

grails - Grails应用程序随机挂起

java - 在 Netbeans 6.9.1 中验证 Java 类库

grails - 哪个SDK可将现有Grails项目导入IntelliJ IDE?

groovy - 如何在 Groovy 中使用 if else 语句?

java - 如何使用 Camel 中的蓝图模拟端点?

java - 乔比 : How to properly unit test a route that returns different content depending on MediaType?

php - 在 AppController 中对 beforeFilter() 和 beforeRender() 进行单元测试的正确方法

json - 根据给定的JSON文件创建域类

grails - <g:select>中的Grails <g:if>