Что нужно тестировать в первую очередь при написании приложения по DDD

«Что нужно тестировать в первую очередь при написании приложения по DDD» — вопрос из категории Тестирование, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При тестировании DDD-приложения фокус должен быть на доменных моделях и агрегатах, так как они содержат ключевую бизнес-логику.

Основные тестируемые аспекты:

  1. Инварианты агрегатов – проверка корректности состояний и соблюдения бизнес-правил.
  2. Value Objects – валидация данных и поведения неизменяемых объектов.
  3. Domain Events – корректность генерации и обработки событий.
  4. Сервисы домена – логика, не принадлежащая конкретному агрегату.

Пример теста агрегата:

func TestOrder_Aggregate(t *testing.T) {
    order := NewOrder("order-123")
    err := order.AddItem("item-1", 2, 100)
    if err != nil {
        t.Fatal("Failed to add item:", err)
    }
    if order.Total() != 200 {
        t.Error("Incorrect total calculation")
    }
}

Интеграционные тесты репозиториев и внешних сервисов – вторичны, их можно покрывать позже.