2016-05-12 140 views
0

当我在Grails 3中使用Build-Test-Data插件运行测试时,我看到以下错误。Grails 3升级测试问题

groovy.lang.MissingMethodException: No signature of method: com...Item.save() is applicable for argument types:() values: [] Possible solutions: last(), wait(), any(), saveAll([Ljava.lang.Object;), saveAll(java.lang.Iterable), last(java.lang.String) 

这是典型的.save().build()我不是一个测试大师所以任何人都知道什么是周围?

更新

的例子看起来像这样...

import grails.buildtestdata.mixin.Build 

@Build(Author) 
class AuthorUnitTests { 

    void testAuthorStuff() { 
     def author = Author.build() 
     ... 
    } 

} 

我的代码看起来像......

@TestFor(Item) 
@Build([Item]) 
class ItemSpec extends Specification 
{ 
    ... 
    def "Blah Blah"() { 
     given: 
      Item i = Item.build(id: 1) 
    } 
} 
+0

如果是单元测试,则应在类级别使用'@Build(Item)',如插件文档中所示。 – dmahapatro

+0

我有点困惑,你能指出你所指的部分吗?我看到附录 – Jackie

+0

有了上述更新,很明显你正在使用'@ Build'。它应该工作。你也必须手动分配'id'吗? – dmahapatro

回答

0

下面单元测试通过Grails的3.1.1:

package com.example 

import grails.test.mixin.TestFor 
import spock.lang.Specification 
import grails.buildtestdata.mixin.Build 

@TestFor(Item) 
@Build(Item) 
class ItemSpec extends Specification { 

    void "test something"() { 
     expect: 
     Item.build(name: 'Test').name == 'Test' 
    } 
} 

的build.gradle

compile 'org.grails.plugins:build-test-data:3.0.0' 

确保建立/编译应用程序,一旦GAV加入build.gradle插件:

gradlew build 

应该做的。

+0

我正在使用grails 3.0.11,但我可以仔细检查 – Jackie