嗨(这是一个非常愚蠢的问题)
如何在测试中从数据库中获取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]
非常感谢 汤姆
答案 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
}