Grails UnitTest

时间:2010-05-04 12:11:43

标签: grails

嗨(这是一个非常愚蠢的问题)

如何在测试中从数据库中获取Domain类?

class PollServiceTests extends GrailsUnitTestCase {
    Integer id = 1

    void testSomething() {
       Teacher teacher1 = Teacher.get(id)
       assert teacher1 != null
    }
}

我总是得到null或

  

没有方法签名:   cz.jak.Teacher.get()适用于   参数类型:(java.lang.Integer)   值:[1]

非常感谢 汤姆

2 个答案:

答案 0 :(得分:5)

Grails单元测试无法访问Grails环境,因此您必须模拟Domain对象。

void testSomething() {
    mockDomain(Teacher)
    def teacher = new Teacher(...)
    assertNotNull teacher.save(insert:true)
    assertNotNull country.countryId
    def found = Teacher.get(country.countryId)
}

答案 1 :(得分:0)

mockDomain有一个可选的第二个参数,它接受一个List。如果传入一个列表,那么get,list,save,update,delete方法将对List中的那些对象起作用(如果有的话)。

void testSomething() {
    def teachers = []
    for (i in 0..9) {
      teachers.add(new Teacher(name: "teacher${it}"))
    }
    mockDomain Teacher, data

    Teacher t2 = Teacher.get(2)
    assertEquals "teacher2", t2.name
}