@OrdeO
just......newbie

Как можно протестировать FizzBuzz с помощью рубиевского MiniTest`a?

Есть классический FizzBuzz
def fizz_buzz
  n = 0
  while n < 100
    n += 1
    if n % 3 == 0 && n % 5 == 0
      puts 'FizzBuzz'
    elsif n % 3 == 0
      puts 'Fizz'
    elsif n % 5 == 0
      puts 'Buzz'
    else
      puts n
    end
  end
end


Как его протестировать с помощью MiniTest что б не прописывать все 100 значений, при том не уменьшая n?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
oh_shi
@oh_shi
Это не тру Ruby Way FizzBuzz, оно могло бы выглядеть как-то так:
puts ((1..100).map do |i|
  str = ''
  str << 'Fizz' if i % 3 == 0
  str << 'Buzz' if i % 5 == 0
  str.empty? ? i : str
end)

А по тестам, вам не нужно тестировать каждое из 100 значений. Достаточно минимального, максимального и по тесту под каждую ветку в if. Лучше избегать while и заводить нужное число итераций в метод через параметр, и по нему уже идти через each/map.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы