Вступить в клуб →
средняявопросТестирование: testing, testify, httptest, testcontainers

Тест сравнения списка категорий падает примерно в каждом третьем запуске

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 выполняются в случайном порядке

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела