2011-06-06 69 views
-1

我试了下:问题使用Grails单元测试

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 

} 

但我得到一个错误:

No signature of method: org.uca.sanxer2011.services.MinibarService.obtenerBebidaDisponible() is applicable for argument types: (org.uca.sanxer2011.domain.application.Minibar, java.lang.String) values: [org.uca.sanxer2011.domain.application.Consumibles : 1, Refresco]

服务obtenerBebidaDisponible()是:

def obtenerBebidaDisponible(Minibar minibar, String tipo) { 
    def bebida = minibar.bebidas.find{ it.bebida.tipo == tipo } 
    return bebida.cantidadDisponible 
} 

的域迷你是:

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' 
    } 
} 
+1

您需要在服务中显示obtenerBebidaDisponible方法的方法签名。这只是一个错字吗? – 2011-06-06 16:06:24

+0

我把这个代码更多了。 – grouser 2011-06-06 16:10:54

+0

难道你有两个“迷你”课?如果你尝试'grails clean'会怎么样? – 2011-06-07 07:53:43

回答

0

使用mockDomain()之前(而不是之后)您创建域类的实例 - 它为模拟域类创建一个不同的Class

另外,您不必向mockDomain()提供第二个参数。

+0

你好,结果是一样的。 – grouser 2011-06-06 16:30:52

+0

我把第一行mockDomain(迷你)。但结果是一样的:没有方法的签名:org.uca.sanxer2011.services.MinibarService.obtenerBebidaDisponible()适用于参数类型:(org.uca.sanxer2011.domain.application.Minibar,java.lang.String)值:[org.uca.sanxer2011.domain.application.Consumibles:null,Refresco] – grouser 2011-06-06 16:32:28

+0

您是否删除了'mockDomain()'的第二个参数? – 2011-06-06 20:14:50