Итак, я пытаюсь создать объект словаря в Ruby и получить его, чтобы передать кучу тестов RSPEC как часть проекта. Пока это было хорошо, но я застрял на одном конкретном тесте. Здесь нет на Rspec до этого теста:Словарь Object в Ruby
require 'dictionary'
describe Dictionary do
before do
@d = Dictionary.new
end
it 'is empty when created' do
@d.entries.should == {}
end
it 'can add whole entries with keyword and definition' do
@d.add('fish' => 'aquatic animal')
@d.entries.should == {'fish' => 'aquatic animal'}
@d.keywords.should == ['fish']
end
it 'add keywords (without definition)' do
@d.add('fish')
@d.entries.should == {'fish' => nil}
@d.keywords.should == ['fish']
end
it 'can check whether a given keyword exists' do
@d.include?('fish').should be_false
end
it "doesn't cheat when checking whether a given keyword exists" do
@d.include?('fish').should be_false # if the method is empty, this test passes with nil returned
@d.add('fish')
@d.include?('fish').should be_true # confirms that it actually checks
@d.include?('bird').should be_false # confirms not always returning true after add
end
end
Все проходит до сих пор для последнего теста, кроме «не обманывают при проверке, существует ли данное ключевое слово». Я пытаюсь оборачивать голову тем, как я могу это пройти, но пока ничего не добился. Любая помощь будет принята с благодарностью. Вот что у меня есть до сих пор:
class Dictionary
attr_accessor :keywords, :entries
def initialize
@entries = {}
end
def add(defs)
defs.each do |word, definition|
@entries[word] = definition
end
end
def keywords
input = []
@entries.each do |key, value|
input << key
end
input.sort
end
def include?(key)
self.keywords.include?(keywords.to_s)
end
end
Заранее благодарен!
Какой из них «не обманывает, проверяя, существует ли данное ключевое слово», терпит неудачу? – sawa
Простите меня, если это грубо, но могу ли я спросить, какова точка этого объекта? Я не вижу никаких функциональных возможностей, которые не предоставляются Hash .. –
Вы пренебрегаете упоминанием о том, как это происходит. –