Mock I18n para Rspec

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 translatemétodo de I18n, criamos nossa própria classe herdada de I18n::Backend::Simplee 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