2013-12-09 3 views
0

Я изучаю rspec и интересуюсь некоторыми примерами тестов, которые я могу выполнить для следующей проблемы с кодированием, когда мне нужно создать объект, который занимает длинную строку и возвращает частоту каждого слова в нем, подобно приведенному ниже коду:Какие тесты rspec следует использовать?

WordTracker.new('Toy boat toy boat toy boat').frequency 

{ 
    "toy" => 3, 
    "boat" => 3 
} 

ответ

0
describe WordTracker do 

    context '#frequency' do 
    {'toy boat toy boat toy boat'=>{'toy'=>3, 'boat'=>3}, 
    'toy boat boat toy boat fred'=>{'toy'=>2, 'boat'=>3, 'fred'=>1}, 
    'etc'=>{'etc'=>1} 
    }.each do |given, expected| 
     specify "for '#{given}' expect '#{expected}'" do 
     expect(WordTracker.new(given).frequency).to eq(expected) 
     end 
    end 
    end 

end 
0

Похоже, что метод, управляемый данными, был бы лучше всего для этого. Как насчет?

describe WordTracker do 

    describe '#frequency' do 

    [ 
     { 
     in: '', 
     out: {} 
     }, 
     { 
     in: 'toy boat toy boat toy boat', 
     out: { 'toy' => 3, 'boat' => 3 } 
     }, 
     { 
     in: 'toy', 
     out: { 'toy' => 1 } 
     } 
    ].each do |example| 
     it "should convert #{example[:in]} to #{example[:out]}" do 
     expect(WordTracker.new(example[:in]).frequency).to eql(example[:out]) 
     end 
    end 

    end 

end 

Просто бросьте это вместе, возможно, не выполняйте чисто, но эй, вы учитесь, хорошее упражнение.

+0

Благодарим за помощь! – John

Смежные вопросы