Я использую Чистая архитектура в моем 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
конструктор для удаления зависимости