Я пытаюсь написать конструктор для класса в ruby 2.1.5 с использованием аргументов ключевых слов со значениями по умолчанию, однако назначение переменных экземпляра не работает:Проблема с назначением значений аргументов ключевых слов для ivars в ruby 2.0
class Base
attr_accessor :name
def initialize name: "void",
contents: []
@name = name
@contents = contents
end
end
В моем RSpec тест:
it 'should take optional param name' do
subject { Base.new(name: "fnordland") }
expect(subject.name).to eq "fnordland"
end
не может выглядеть примерно так:
2) Base initialize should take optional param location_name
Failure/Error: expect(subject.name).to eq "fnordland"
expected: "fnordland"
got: "void"
(compared using ==)
Инициализатор работает как ожидалось в IRB, но тест терпит неудачу. Я знаю в своих костях, что это, вероятно, что-то очень маленькое и совершенно идиотское, но я смущен - примеры назначения аргументов ключевого слова для ivars в ruby 2.1, похоже, указывают на то, что это должно работать.
Ваш код работает как следует, когда я запускаю его. – Adrian
Кажется, работает в irb, поэтому я считаю, что проблема, скорее всего, мой тест. – Chazu
'subject' должен идти [вне вашего' it' блока] (http://betterspecs.org/#subject). –