在Rspec服务测试中包含I18n帮助程序

时间:2016-04-04 05:46:26

标签: ruby-on-rails rspec rails-i18n

我在我的应用中使用Services,这不是“标准”应用组件之一。

假设我有一个规范测试如下

需要“rails_helper”

# spec/services/create_user.rb
RSpec.describe CreateUser, type: :service do
  it "returns the error message" do
    error_message = Foo.new.errors
    expect(error_message).to eq(t("foo.errors.message"))
  end

只测试返回的字符串是否与特定的翻译字符串匹配。

但是这会引发错误,因为帮助程序t()不可用。

我可以明确地将其称为I18n.t(),但出于我自己的好奇心,我如何包含正确的模块以便能够轻松地调用速记形式?

谢谢!

1 个答案:

答案 0 :(得分:6)

您应该可以使用;

将其添加到RSpec配置中
RSpec.configure do |config|
  config.include AbstractController::Translation
end

这意味着您可以使用t()代替I18n.t()