Hola, Kevin:
Deberías preguntarte cuáles son las postcondiciones del método que ejecutás en la parte de "Act". Por lo que entiendo sería simplemente marcar como embalado al primer pedido de su colección de pedidos. En ese caso, deberías verificar que eso haya sucedido. Para eso podrías implementar un mensaje en la clase Despacho que devuelva el primer pedido y luego verificar que su estado sea "embalado". Quedaría algo de este estilo:
test01PruebaDespachoEmbalaElPrimerPedidoYCambiaSuEstado "Arrange" | despacho pedido | despacho := Despacho new. pedido := Pedido new. despacho tomarPedido: pedido. "Act" despacho embalarPedido. "Assert" self assert: despacho primerPedido estado equals: 'embalado'.
Queda medio raro igualmente dado que el objeto pedido no tiene ninguna responsabilidad más que almacenar su estado como una cadena de caracteres. Quizás habría que revisarlo en su contexto para ver si tiene sentido en el modelo dependiendo de cuáles sean los requerimientos de lo que querés implementar.
Otras recomendaciones y observaciones:
- En tu ejemplo no entendí por qué utilizaste despachoAuxiliar. No era necesario.
- Tu prueba falla porque estás comparando una instancia de Despacho con la clase de Despacho (que también es un objeto). Si agregás la palabra class en la última línea entre
despachoAuxiliar
yequals
entonces tu prueba pasa, aunque no tiene mucho sentido por lo que mencionaba antes. - Si queremos probar que un objeto devuelto sea de cierto tipo, la mejor manera sería verificar que se comporte como el objeto esperado y no utilizar el mensaje class para eso.
- Todos los mensajes que no tengan una sentencia de retorno explícita (el circunflejo) devuelven
self
por defecto, es decir, la propia instancia. - Si querés acceder al primer elemento de una colección indexable podés usar el mensaje
first
. Análogamente podés usarlast
para acceder al último.
Saludos,
Tomás