2015-07-21 68 views
2

當與RSpec中的I18n的翻譯測試Ruby代碼,我得到的錯誤是這樣的:如何測試用的I18n翻譯Ruby代碼中的RSpec

translation missing: en.lib.filter.equal_to 

這裏有一個簡單的例子:

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

規格:

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

在Rails中一切正常。

如何在我的規格中使用I18n?

+0

不知道我是否理解你的問題。你是說你有一個有效的':en'語言環境,但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