2011-06-06 61 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