Тест сравнения списка категорий падает примерно в каждом третьем запуске
func CategoryNames(counts map[string]int) []string {
names := make([]string, 0, len(counts))
for name := range counts {
names = append(names, name)
}
return names
}
// в тесте
assert.Equal(t, []string{"books", "shoes", "toys"}, CategoryNames(counts))
Код не меняется, тест то проходит, то нет. Почему?
- Порядок обхода map в Go намеренно случайный
- append меняет порядок элементов среза
- assert.Equal сравнивает срезы без учёта порядка
- Тесты в Go выполняются в случайном порядке
