域类的Grails集成测试:没有方法异常的签名

时间:2013-04-30 00:05:50

标签: grails groovy grails-domain-class

我尝试在项目中为域类编写集成测试。但是每次我运行测试时都会遇到一些错误。

我的代码如下:

class ProductIntegrationTest extends GroovyTestCase {

    void testSave() {
        def product = new Product(name: "phone")
        product.save(flush: true, failOnError: true)
        assert.....
    }
}

运行测试后,例外是:

groovy.lang.MissingMethodException: No signature of method: Product.save() is applicable for argument types: () values: []
Possible solutions: save(), save(boolean), save(java.util.Map), wait(), last(), any()

但是,如果我为域类添加了@TestFor(Product)注释,则错误已经消失。我在文档中找到了集成测试,我们不能放@TestFor注释,因为它只用于单元测试。

任何人都有所了解?

2 个答案:

答案 0 :(得分:2)

迟到的答案,但今天我遇到了这个问题。一个可能的问题是test/integration目录中的不同测试正在扩展GrailsUnitTestCase。执行grails test-app integration时,这会给后续测试带来问题,但不会导致不正确扩展的测试GrailsUnitTestCase。将这些课程移至test/unit或将扩展名更改为GroovyTestCase将解决此问题。

答案 1 :(得分:0)

我得到了同样的错误。我发现我忘记为测试环境设置数据源。在DataSource.groovy中,确保为每个数据源设置设置了数据源以进行开发。