В какой каталог ставить макеты?

Я недавно экспериментировал с GoMock, тестовый макет фреймворка, поддерживаемый официальными создателями языка Go. Мне было интересно, где наиболее разумное место, чтобы положить эти издевательские файлы.

Моя текущая структура каталогов выглядит следующим образом. Это как Go проекты должны быть структурированы?

appname
|-- gateways
    |-- gateway1.go
    |-- gateway1_test.go
    |-- gateway2.go
    |-- gateway2_test.go
    |-- mocks
        |-- gateway1.go
        |-- gateway2.go

Это немного под влиянием выступления Бена Джонсона здесь.

2 ответа

Я склонен следовать этой статье также Бена Джонсона

Ссылка на статью

В общем, такой подход, когда у вас есть пакет для общих макетов, является хорошим. Здесь стоит отметить одну вещь: если вы не определяете свои модели вне gateways пакет вы можете получить импортный цикл.

  1. gateways определяет модели
  2. mocks импорт gateways.Model
  3. gateways импорт mocks для испытаний

Есть 2 способа это исправить; во-первых, просто переместить ваши модели в domain, корневой пакет снаружи gateways (см. статью для примеров). Или только протестируйте публичный интерфейс вашего gateways пакет с помощью gateways_test как пакет в ваших тестовых файлах.

Я помещаю его в тот же пакет, что и мой интерфейс, и, по моему мнению, это хорошее место, поскольку оно отделено от унаследованных структур. Я думаю, что структура вашего проекта не очень хороша, я предпочитаю сделать это ниже (основано на архитектуре DDD).

пример

      appname
|-- gateways
    |-- gateway.go //this file contain interface and mocks 
    |-- gateway1
        |-- gateway1.go
        |-- gateway1_test.go 
    |-- gateway2
        |-- gateway2.go
        |-- gateway2_test.go 
Другие вопросы по тегам