16.05.09
Rails: I18n Unit Test
Si habéis probado el nuevo módulo de Internacionalización (I18n) de rails habréis podido comprobar que si cambiáis el idioma que teníais por defecto en vuestro fichero de configuración “environment.rb” los unit empiezan a dar errores. Esto no siempre pasa y suele pasar cuando habéis comprobado con un (por ejemplo) assert_equal los mensajes de error que da la aplicación.
El problema viene de que probablemente no habéis traducido los mensajes de error (que según parece no vienen traducidos) a vuestro idioma, y por lo tanto tendréis que meterlos en fichero de idioma.yml.
Pero esto no evita todos los errores ya que si volvéis a cambiar el idioma por defecto te dará error. Lo que hay que hacer es asegurarse que los errores sean también internacionales. Para comprobarlo en todos los lenguajes lo que he incluido es un bucle que lo comprueba idioma por idioma:
for language in I18n.available_locales
I18n.locale = language
assert !blognew.save
assert_equal I18n.t(“activerecord.errors.messages.taken”),blognew.errors.on(:url)
end
Daos cuenta como al comprobar el mensaje de error no pongo un mensaje fijo sino que redirijo al mensaje exacto de los ficheros xml. En realidad no es necesario comprobarlo idioma por idioma.
