6

contexto Pregunta:cómo probar i18n en Rails con RSpec

Digamos que hay una cierta fila realmente importante en config/lugares/en.yml que es crucial para existir.

en: 
    foo: 
    bar: "bubla!" 
  • no quiero poner a prueba cada línea, pero
  • no quiero que la prueba sea demasiado frágil (por lo que no I18n.t ('foo.bar'). Deberían = ~/Bubla /)

así como yo estoy probando actualmente es así

#spec/locals_spec.rb 

require 'spec_helper' 
describe I18n do 
    it do 
    I18n.t('date.datepicker').should be_kind_of(String) 
    end 
end 

esta manera Sólo estoy asegurando que la traducción existe y que lo haga no continúa (por ejemplo, 'f oo.bar.car.lol'

pero todavía no estoy satisfecho

Pregunta: Cuál es la mejor práctica para probar traducciones I18n con RSpec y donde en la carpeta de especificaciones que debería colocarlos?

+0

después de respuesta @Paul refactorizo ​​a: it {I18n.available_locales.each {| locale | I18n.t ('date.datepicker'). Should be_kind_of (String)} – equivalent8

Respuesta

0

Creo que escribiría una prueba de aceptación para algo tan "crucial".

en la mayoría de los casos necesita la traducción en un contexto específico, es decir. mostrando algo en un marcador de fecha. probaría ese contexto usando el capibara o lo que sea que funcione con un controlador de JavaScript.

simplemente probar que existe esta traducción es inútil si no tiene el contexto en el que se usa.

+0

Obtiene el contexto justo al leer la palabra clave "datapicker" :) ... digamos que tengo un ayudante que manejará toda la representación de las entradas datepicker . Ya creé la especificación auxiliar para verificar si todo está presente. Pero estoy cortando I18n para devolver el valor ficticio I18n.stub (: t) {'exampleformat'} ... así que de esta manera estoy seguro de que el contexto html se procesa correctamente. Me preocupa la traducción real. .. fuente en https: //gist.github.com/3053409 helper está en la parte inferior – equivalent8

4

Compruebe this StackOverflow question para algunas ideas. Mi forma preferida es this answer en la misma pregunta.

actualización: En estos días que tienden a utilizar la gema i18n-tasks para manejar las pruebas relacionadas con i18n, y no lo que he escrito anteriormente o haber respondido previamente en StackOverflow.

Quería usar i18n en mis pruebas RSpec principalmente para asegurarme de tener traducciones para todo, es decir, no se perdieron traducciones. i18n-tasks puede hacer eso y más a través del análisis estático de mi código, por lo que ya no necesito ejecutar pruebas para todos los I18n.available_locales (aparte de cuando se prueba una funcionalidad muy específica del entorno local, como, por ejemplo, cambiar de cualquier configuración regional a cualquier otra configuración regional en el sistema).

Hacer esto significa que puedo confirmar que todas las claves i18n del sistema tienen valores (y que ninguno está sin usar u obsoleto), mientras mantiene baja la cantidad de pruebas repetitivas y, en consecuencia, el tiempo de ejecución del paquete.

+0

hey, gracias por responder, pero en general su solución es la misma que @Phoet descrita en la publicación a continuación, por favor lea mi comentario; sin embargo, me gusta la idea de iterar * I18n.available_locales.each * + 1 para ese – equivalent8

+0

@ equivalent8, es un poco tarde, pero espero que mi actualización sirva para ofrecer otra alternativa para probar i18n. Si ha aprendido algo más desde su última actualización de esta pregunta, ¡por favor comparta! –

Cuestiones relacionadas