как тестировать output in rspec с использованием i18n

Есть метод:

def start_console
      message(:welcome)
      show_menu
end

  def message(message, params = {})
      puts I18n.t(message, params)
    end

def show_menu
      message(:menu)
      answer = gets_user_answer
      choose_options(answer)
    end

я хочу проверить вывод в консоль

it 'welcome and menu' do
            allow(subject).to receive_message_chain(:gets, :chomp)
            expect{subject.message(:welcome)}.to output('Welcome to game Codebreaker\n').to_stdout
            expect{subject.message(:menu)}.to output('///').to_stdout
            subject.start_console
        end

Failure/Error: expect{subject.message(:welcome)}.to output('Welcome to game Codebreaker\n').to_stdout

       expected block to output "Welcome to game Codebreaker\\n" to stdout, but output "translation missing: en.welcome\n"
       Diff:
       @@ -1 +1 @@
       -Welcome to game Codebreaker\n
       +translation missing: en.welcome

Если я добавлю

allow(I18n).to receive(:t).with(:welcome, {}) {"Welcome to game Codebreaker"}

тест проходить, но это через заглушку, как его заставить использовать реальную базу сообщений Это мой первый тест не судите строго


Ответы (0 шт):