Estávamos tendo muitos problemas com as simulações I18n para rspec. Normalmente, devemos testar apenas se existe uma chave e não o valor real traduzido, pois isso pode mudar em relação ao idioma do usuário. E aparentemente, parece que o mock de I18n não é tão fácil.
Em vez de fazer aliases para o translate
método de I18n
, criamos nossa própria classe herdada de I18n::Backend::Simple
e simulamos os retornos.
module I18n
module Backend
class SimpleMock < Simple
def translate(locale, key, options = {})
key_with_interpolations = key.to_s + "#{options.map(&:to_s).join(",")}"
case super(:en_dev, key, options)
when String
key_with_interpolations
when Array
[key_with_interpolations]
when Hash
{}
end
end
end
end
end
I18n.backend = I18n::Backend::SimpleMock.new