You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test "si un doctor cura a un enfermo, la calidad del doctor aumenta" {
const calidadInicial = unDoctorCualquiera.calidad()
unDoctorCualquiera.cura(enfermo)
const calidadFinal = unDoctorCualquiera.calidad()
assert.that(calidadFinal > calidadInicial)
}
El test falla y dice: "Cannot send message calidad() to null" en la línea donde empieza el cuerpo del test.
En cambio, haciendo esto sí lo entiende y el test da verde:
test "un doctor inicialmente tiene calidad cero" {
assert.equals(unDoctorCualquiera.calidad(), 0)
}
Y por las dudas, comento que eso mismo usando (innecesariamente) una referencia, también falla:
test "un doctor inicialmente tiene calidad cero" {
const calidad = unDoctorCualquiera.calidad()
assert.equals(calidad, 0)
}
Pareciera que se hace lío cuando se asigna a una referencia algo que viene de un fixture.
Leí otros issues donde había problemas al poder asignar más de una vez algo a una constante o demás problemas en fixtures, no sé si estará englobado en un mismo problema de fondo.
Probado en Windows 10 x64, con versión de Wollok 1.6.2
The text was updated successfully, but these errors were encountered:
sanuzzi
changed the title
Asignar dentro de un test falla si es que le preguntamos algo declarado en el fixture
Asignar dentro de un test falla si es que le preguntamos a algo declarado en el fixture
Aug 20, 2017
estuve probando variantes y sólo sucede en ese caso:
cuando se asigna a una const (o var) local de un test en la misma línea de la declaración, el retorno de un objeto instanciado en el fixture.
no sucede cuando
la const (o var) es del describe
es un var y se asigna en la linea siguiente
si se instancia en la seccion de inicializacion del describe.
tambien vi:
si la referencia al objeto en la seccion de inicializacion se le asigna otro valor, al correr el testo en vez de null tiene dicho valor y da el mensaje de error de DNU
Mas allá del error, el lugar recomendado para inicializar las variables o constantes es en la seccion de inicializacion, reservando el fixture solo para enviar mensajes o tareas mas complejas.
Je, ahí entendí por qué pasa.
Cuando corremos un test,
primero inicializo el estado "global" del test, que si está dentro de un describe constituyen todas las variables que define ese describe. Si uno define la variable con un valor, no habrá problema.
luego se evalúan los miembros del describe (métodos por ejemplo)
y luego se evalúan las variables locales. El problema es que si vos definís en la misma línea el valor llamando a una variable del describe, todavía no está inicializada (debería haber corrido el fixture pero todavía no lo había hecho). Por eso falla.
Fíjense que este describe corre perfecto:
classEnfermo {}
classDoctor {
var calidad =0
method calidad() = calidad
method calidad(_calidad) { calidad = _calidad }
method cura(alguien) { calidad = calidad +1 }
}
describe "issue 1223" {
var unDoctorCualquiera
var enfermo
fixture {
enfermo =newEnfermo()
unDoctorCualquiera =newDoctor()
unDoctorCualquiera.calidad(2)
}
test "si un doctor cura a un enfermo, la calidad del doctor aumenta" {
var calidadInicial
calidadInicial = unDoctorCualquiera.calidad()
unDoctorCualquiera.cura(enfermo)
var calidadFinal
calidadFinal = unDoctorCualquiera.calidad()
assert.that(calidadFinal > calidadInicial)
}
}
Tengo algo así para el fixture:
Y tengo un test así:
El test falla y dice: "Cannot send message calidad() to null" en la línea donde empieza el cuerpo del test.
En cambio, haciendo esto sí lo entiende y el test da verde:
Y por las dudas, comento que eso mismo usando (innecesariamente) una referencia, también falla:
Pareciera que se hace lío cuando se asigna a una referencia algo que viene de un fixture.
Leí otros issues donde había problemas al poder asignar más de una vez algo a una constante o demás problemas en fixtures, no sé si estará englobado en un mismo problema de fondo.
Probado en Windows 10 x64, con versión de Wollok 1.6.2
The text was updated successfully, but these errors were encountered: