我試了下:問題使用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'
}
}
您需要在服務中顯示obtenerBebidaDisponible方法的方法簽名。這只是一個錯字嗎? – 2011-06-06 16:06:24
我把這個代碼更多了。 – grouser 2011-06-06 16:10:54
難道你有兩個「迷你」課?如果你嘗試'grails clean'會怎麼樣? – 2011-06-07 07:53:43