Используйте одинарные кавычки вместо двоеточий в Ruby / Rails - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь пройти этот тест:

 it "returns an object with the correct fields" do 
      expected_response = {"animal_time": @curr_time.strftime("%F %T"), "animals":{}}
      expect(AnimalHaircutSession.latest_for(@animal_haircut)).to eq(expected_response)
  end

При запуске теста я получаю эту ошибку:

 expected: {:animal_time=>"2020-02-14 09:48:30", :animals=>{}}
 got: {"animal_time"=>"2020-02-14 16:48:30", "animals"=>{}}

Почему он преобразует мой ожидаемый ответ в двоеточие и как я могу установить свой ожидаемый ответ, чтобы использовать одинарные кавычки?

1 Ответ

3 голосов
/ 14 февраля 2020

В Ruby двоеточия используются для определения хэшей с символами для ключей. Ключи будут преобразованы в символы.

{ "foo": "bar" } == { :foo => "bar" } # true
{ "foo": "bar" } != { "foo" => "bar" } # true

Если вы хотите определить ха sh, где ключи не являются символами, используйте ха sh -рокетки (=>).

it "returns an object with the correct fields" do 
  expected_response = {
    "animal_time" => @curr_time.strftime("%F %T"), 
    "animals" => {}
  }
  expect(AnimalHaircutSession.latest_for(@animal_haircut)).to eq(expected_response)
end

Хотя Ruby позволит вам смешивать га sh -рокеты и двоеточия в га sh, это обычно не считается хорошей формой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...