Зависимость варианта использования от других вариантов использования в Чистой Архитектуре - PullRequest
2 голосов
/ 12 февраля 2020

Я использую Чистая архитектура в моем python проекте. У меня есть два usecase один TranslationUseCase, а второй AudioUsecase. TranslaionUseCase зависит от AudioUsecase

TranslationUseCase

class TranslationUseCase:
   def __init(self, trans_repo):
       self.trans_repo = trans_repo


   def find_translation(self, also_audio=False):
       if also_audio:
          audio_factory = AudioFactory.find_audio()
          audio = audio_factory.find_by_id(123)

       translation = trans_repo.find_by_id(123)
       # .... Other Code

AudioUseCase

class AudioUseCase:
     def __init(self, audio_repo):
        self.audio_repo = audio_repo


     def find_by_id(self, id):
         return self.audio_repo.find_by_id(id)

TranslationFactory

 class TranslationFactory:

    @classmethod
    def find_translation(cls):
        trans_repo = TranslationRepo()
        return TranslationUseCase(trans_repo)

AudioFactory

 class AudioFactory:

    @classmethod
    def find_audio(cls):
        audio_repo = AudioRepo()
        return AudioUseCase(audio_repo)

Я использую этот способ, и все работает нормально, я не Я знаю, что это правильный путь или нет. Поскольку при написании теста возникает проблема, в тестах совершенно разные repos, поэтому я создаю для них разные factories. TestTranslationFactory и TestAudioFactory Это создает проблему, когда я пытаюсь написать тест для TranslationUseCase, поскольку он жестко закодировал AudioFactory Какое возможное и лучшее решение для этого.

Одно решение, которое на мой взгляд это передать audio_factory в TranslationUsecase конструктор для удаления зависимости

...