Хэш атрибута RSpec - PullRequest
       2

Хэш атрибута RSpec

1 голос
/ 13 декабря 2011

Может кто-нибудь объяснить мне, что здесь не так.Изучение RSpec - я получаю неудачный тест с сообщением - ожидается: "Миллер" получил: ноль.Я думал, что второй 'before block' просто объединит middle_name с оригинальными @valid_attributes.Как правильно это сделать.Я знаю, что могу просто сказать p.middle_name, чтобы назначить его, но я пытаюсь изучить концепции RSpec.

describe Person do
  describe "Validations" do
    subject { p }
    before { @valid_attributes={first_name: "Joe", last_name: "Sample"} }

    ...

    context "with optional middle name" do
      let(:p) { Person.new(@valid_attributes) }
      before { @valid_attributes.merge({middle_name: "Miller"}) }

      its(:middle_name) { should eq("Miller") }
    end
  end
end

1 Ответ

4 голосов
/ 13 декабря 2011
  1. Ваша проблема: Hash#merge возвращает новый хеш, вы хотите Hash#update.

  2. Как это сделать лучше?Это не просто совет для тестирования, но и для программирования в целом: если вы обновляете и повторно используете переменные, вы столкнетесь с некоторыми проблемами с состоянием;принять более функциональный подход.В этом конкретном случае вы должны использовать factory_girl или подобный камень, чтобы легко создавать объекты без обновления @valid_attributes, который знает, где.

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