Это будет хорошо работать.Вы можете сделать тест немного более строгим, если вы используете блок для сбора результатов, а затем утверждаете весь результат:
results = []
categorize(students,student_cat) do |s,g|
results << [s, g]
end
assert results == [
["Good student", "Best"],
["Bad Student", "Below average"],
["Average student", "So-so"],
]
Таким образом, функция не может выдавать какую-то ерунду вместе справильные результаты и пусть они остаются незамеченными.
Если функция может возвращать свои результаты в любом порядке, то сортируйте результаты перед их сравнением:
assert results.sort == [
["Average student", "So-so"],
["Bad Student", "Below average"],
["Good student", "Best"],
]