Как настроить локаль в RSPEC - PullRequest
0 голосов
/ 27 августа 2018

Я новичок в RSPEC. Я написал код RSPEC с именем result_spec.rb, как показано ниже:

describe '#grouped_scores' do
subject { result.grouped_scores }

let(:result) { create(:result, user: user) }

its(:keys) { is_expected.to eq [1] }
its([1]) { is_expected.to be_within(0.001).of(6) }
end

Затем, когда я написал метод в модели с именем result.rb, пример кода выглядит следующим образом:

def grouped_scores
  s = 0
  if score > 10 && I18n.locale == :zh then
    s = 2
  end
  return s
end

Однако, когда я тестировал RSPEC локально, я продолжал получать ошибку ниже:

Failures:
1) Result#grouped_scores keys should eq [1]
 Failure/Error: its(:keys) { is_expected.to eq [1] }

   expected: [1]
        got: []

   (compared using ==)
 # ./spec/models/result_spec.rb:39:in `block (3 levels) in <top (required)>'
2) Result#grouped_personality_scores [1] should be within 0.001 of 6
 Failure/Error: its([1]) { is_expected.to be_within(0.001).of(6) }
   expected 0 to be within 0.001 of 6
 # ./spec/models/result_spec.rb:40:in `block (3 levels) in <top (required)>'

Так что мне было интересно, не потому ли, что я не настроил I18n.locale как "zh", поэтому он не получил значение? Если так, как назначить локаль в RSPEC? Или я должен знать что-то еще, чтобы исправить ошибку в RSPEC?

Пожалуйста, помогите! Спасибо !!

1 Ответ

0 голосов
/ 28 августа 2018

Язык тестирования

# Assuming I have a LocalesController with check_for_locale action
describe LocalesController do

  after(:each) do
    I18n.locale = :en
  end

  it "should check if the locale is zh" do
    get :check_for_locale, locale: :zh
    expect(I18n.locale).to eq(:zh)
  end

  it "should check if the locale is set to default that is english" do
    get :check_for_locale
    expect(I18n.locale).to eq(:en)
  end

end

locales_controller.rb

class LocalesController < ApplicationController

  def check_for_locale

  end

end
...