我在ProyectoInvestigacionController.groovy中有这个方法
def filtrar(){
def consulta="%"+params.consulta.trim()+"%"
if(consulta.isEmpty()==false){
def proyectoInvestigacionInstance=ProyectoInvestigacion.createCriteria().list{
or {
like("titulo",consulta)
like("codigo",consulta)
like("resumen",consulta)
}
}
}
单元测试
@TestMixin(GrailsUnitTestMixin)
@TestFor(ProyectoInvestigacionController)
@Mock([ProyectoInvestigacion])
class ProtectoInvestigacionFiltrarTests {
void testFiltrar() {
def ProyectoInvestigacion proyecto=new ProyectoInvestigacion(titulo:"Primer Proyecto Investigacion",
resumen:"Proyecto filtrar",
fechainicio:new Date("01/01/2012"),
fechafin:new Date("12/30/2013"),
codigo:"01",
estado:"Aprobado").save()
assertEquals 1, ProyectoInvestigacion.count()
def consulta="Proyecto filt"
params.consulta=consulta
def model =controller.filtrar()
println response.getXml().toString()
assertTrue response.getXml().toString().contains("Proyecto filtrar")
}
此测试工作正常!!
现在与HasMany协会!!
我在ParticipacionController.groovy中有方法filtrar
def filtrar(){
def consulta="%"+params.consulta.trim()+"%"
if(consulta.isEmpty()==false){
def participacionInstance=Participacion.createCriteria().list{
or{
proyectoinvestigacion{
or {
like("titulo",consulta)
like("codigo",consulta)
like("resumen",consulta)
}
}
investigador{
or {
like("apellido",consulta)
like("nombre",consulta)
}
}
}
}
}
}
单元测试
@TestMixin(GrailsUnitTestMixin)
@TestFor(ParticipacionController)
@Mock([Participacion,Alumno,Docente,ProyectoInvestigacion,Investigador])
class ParticipacionFiltrarTests {
Alumno alumno1
Docente docente1
ProyectoInvestigacion proyecto
void setUp() {
alumno1= new Alumno(nombre:"ruben",apellido:"pennise",email:"Ruben@hotmail.com",
matriculaUniversitaria:"795",estado:"Activo").save()
docente1= new Docente(nombre:"oscar",apellido:"quinteros",email:"oequinteros@hotmail.com",
matriculaProfesional:"789").save()
proyecto=new ProyectoInvestigacion(titulo:"Proyecto Investigacion Filtrar Participacion",
resumen:"resumen del proyecto",
fechainicio:new Date("01/01/2012"),
fechafin:new Date("12/30/2013"),
codigo:"01",
estado:"Aprobado").save()
}
void tearDown() {
// Tear down logic here
}
void testFiltrar() {
def participacion= new Participacion(rol:'Director',dedicacion:120,
fechadesde:new Date("01/01/2012"),fechahasta:new Date("12/30/2013"),investigador:docente1,proyectoinvestigacion:proyecto).save()
assertEquals 1, Participacion.count()
def consulta="oscar"
params.consulta=consulta
def model =controller.filtrar()
println response.getXml().toString()
// el getText o getXml no devuelven lo correcto pero en run si, porque?
assertTrue response.getXml().toString().contains("oequinteros@hotmail.com")
assertTrue response.getXml().toString().contains("Proyecto Investigacion Filtrar Participacion")
}
此测试不起作用!!是否有可能使用mockDomain查询与createcriteria的关系?