2015-07-21 1 views
2

При тестировании на Ruby кода с I18N переводов в RSpec, я получаю ошибки как это:Как проверить на Ruby код с I18N переводов в RSpec

translation missing: en.lib.filter.equal_to 

Вот упрощенный пример:

def word_for_operator 
    I18n.t('lib.filter.equal_to') 
end 

Spec:

it "returns the correct label" do 
    expect(filter.word_for_operator).to eq("some value") 
end 

Все работает отлично в Rails.

Как я могу использовать I18n в своих спецификациях?

+0

Не уверен, что я понимаю вашу проблему. Вы говорите, что у вас есть действующий язык::, но RSpec не использует его? – Stefan

+0

@Stefan да, это правильно. Он работает при использовании приложения rails в качестве драгоценного камня или запускает его автономно, но не в спецификации. – Steve

ответ

-1

Не удалось бы решить вашу уродливую проблему? Я понимаю, это не решение, которое вы искали, но этого может быть достаточно.

it "returns the correct humanised label" do 
    { 
     'lib.quattro_filter.none' => 'None', 
     'lib.quattro_filter.and' => 'and', 
     ... 
    }.each do |name, value| 
     allow(I18n).to receive(:t).with(name).and_return(value) 
    end 
    # the same with expects 
end 
+0

Спасибо за ответ, это не решает мою проблему необходимости делать это в каждом тесте. Их будет немало. – Steve