キーワードと定義を含むエントリ全体を追加できる次のブロックがあります。
class Dictionary
def initialize
@d = {}
end
def entries
@d
end
def add(entry)
(entry).each {|k,v=nil|
@d[k] = v
}
end
def keywords
@d.keys
end
end
定義なしでキーワードを追加できるようにしたい (キーを追加するが、値を追加しない)。上記のブロックで v=nil を設定しようとしましたが、それでも失敗します。Rspecに対して実行したときに発生するエラーは次のとおりです。
Dictionary
is empty when created
can add whole entries with keyword and definition
add keywords (without definition) (FAILED - 1)
Failures:
1) Dictionary add keywords (without definition)
Failure/Error: @d.add('fish')
NoMethodError:
undefined method `each' for "fish":String
# ./11_dictionary/dictionary.rb:13:in `add'
# ./11_dictionary/dictionary_spec.rb:27:in `block (2 levels) in <top (required)>'
最後に、パスする必要がある rspec テストを次に示します。
it 'add keywords (without definition)' do
@d.add('fish')
@d.entries.should == {'fish' => nil}
@d.keywords.should == ['fish']
end