Grails单元测试的问题

Grails单元测试的问题,grails,junit,Grails,Junit,我有下一个测试: void testRellenar() { Minibar m = new Minibar(categoria: 'Alta') Hotel h = new Hotel(precioIndividual: 40, precioDoble: 70, precioCamaSupletoria: 10, tasaNormal: 1, tasaAlta: 2, tasaBusiness: 1.3, tarifaLlamadaInternacional: 0.5, tar

我有下一个测试:

void testRellenar() {
    Minibar m = new Minibar(categoria: 'Alta')
    Hotel h = new Hotel(precioIndividual: 40, precioDoble: 70, precioCamaSupletoria: 10, tasaNormal: 1, tasaAlta: 2, tasaBusiness: 1.3, tarifaLlamadaInternacional: 0.5, tarifaLlamadaNacional: 0.2, cantidadCerveza: 4, cantidadAgua:4, cantidadVino: 2, cantidadRefresco: 4, cantidadAlcohol: 4)
    Bebida b1 = new Bebida(tipo:"Tercio de Cerveza", precio:2)
    Bebida b2 = new Bebida(tipo:"Agua", precio:1.40)
    Bebida b3 = new Bebida(tipo:"Refresco", precio:2)
    Bebida b4 = new Bebida(tipo:"Vino", precio:10.50)
    Bebida b5 = new Bebida(tipo:"Alcohol", precio:5.20)
    def testInstances = [m]
    mockDomain(Minibar, testInstances)
    mockDomain(Hotel, [h])
    mockDomain(Bebida, [b1,b2,b3,b4,b5])
    h.save()
    b1.save()
    b2.save()
    b3.save()
    b4.save()
    b5.save()

    def srv = new MinibarService()
    srv.rellenarMinibar(m)
    def tipob = "Refresco"
    def resultado = srv.obtenerBebidaDisponible(m, "Refresco")

    assertNotSame resultado,0

}
但我得到了下一个错误:

无方法签名: org.uca.sanxer2011.services.MinibarService.obtenerbebidadiponsible() 适用于参数类型: (org.uca.sanxer2011.domain.application.Minibar, java.lang.String)值: [org.uca.sanxer2011.domain.application.Consumibles] :1,Refresco]

服务obtenerBeBidaDiResponsible()是:

域迷你吧是:

class Minibar extends Consumibles {

    static hasMany = [bebidas:Bebida_Minibar]
    static belongsTo = [habitacion:Habitacion]
    String categoria;

    static constraints = {
        categoria(inList:['Business', 'Alta', 'Normal'])
    }

    static mapping = {
        table 'minibar'
        categoria column: 'categoria'
        bebidasDisponibles column: 'bebidas_disponibles_id'
        bebidasConsumidas column: 'bebidas_consumidas_id'
        habitacion column: 'habitacion_id'
    }
}
在创建域类实例之前(而不是之后)使用
mockDomain()
,它会为模拟域类创建不同的


另外,您不必为
mockDomain()

提供第二个参数,您需要在服务中显示obtenerbebidadible负责方法的方法签名。这仅仅是一个输入错误吗?我把这个代码放得更高了。是不是你有两个
Minibar
类?如果您尝试
grailsclean
,会怎么样?您好,结果是一样的。我把它放在第一行mockDomain(Minibar)中。但结果是一样的:没有方法的签名:org.uca.sanxer2011.services.MinibarService.obtenerbebidadiponsible()适用于参数类型:(org.uca.sanxer2011.domain.application.Minibar,java.lang.String)值:[org.uca.sanxer2011.domain.application.Consumibles:null,Refresco]是否删除了
mockDomain()
的第二个参数?是的,我将mockDomain放在实例之前,Minibar为null,在所有示例中都放在实例之后
class Minibar extends Consumibles {

    static hasMany = [bebidas:Bebida_Minibar]
    static belongsTo = [habitacion:Habitacion]
    String categoria;

    static constraints = {
        categoria(inList:['Business', 'Alta', 'Normal'])
    }

    static mapping = {
        table 'minibar'
        categoria column: 'categoria'
        bebidasDisponibles column: 'bebidas_disponibles_id'
        bebidasConsumidas column: 'bebidas_consumidas_id'
        habitacion column: 'habitacion_id'
    }
}