在域类上模拟“保存”方法

时间:2010-07-15 20:20:03

标签: unit-testing grails

我很难在Grails 1.3.3的单元测试中模拟save实例方法。我创建了一个名为Person的简单域类,它有一个名为“name”的属性(可空)。

package tutorial

class Person {

    String name

    static constraints = {
        name nullable: true
    }
}

在我的测试中,我正在尝试做一些我在文档中找到的东西:

class PersonTests extends GrailsUnitTestCase {
    public void testCanSavePerson() {
        def testInstances = []
        mockDomain(Person, testInstances)
        assertEquals(0, Person.count())
        new Person(name: "Bob").save()
        assertEquals(1, Person.count())
    }
}

然而,一旦我运行测试,我得到的是一个例外:

显示java.lang.NullPointerException at grails.test.MockUtils $ _addValidateMethod_closure83.doCall(MockUtils.groovy:973) at grails.test.MockUtils $ _addValidateMethod_closure84.doCall(MockUtils.groovy:1014) at grails.test.MockUtils $ _addDynamicInstanceMethods_closure67.doCall(MockUtils.groovy:736) at grails.test.MockUtils $ _addDynamicInstanceMethods_closure67.doCall(MockUtils.groovy) 在tutorial.PersonTests.testCanSavePerson(PersonTests.groovy:25)

而第25行恰好是在新创建的实例上调用save()的行。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

这是Grails 1.3.3中已知的错误。阅读更多相关信息,并在相关的JIRA票证GRAILS-6482中找到解决方法。