Если вы создаете экземпляр службы самостоятельно, а не используете инъекцию зависимостей в гнезде, вы отрицаете цель платформы.
Но как мне сказать программе использовать MailMockService
?
Это именно то, что делает внедрение зависимостей таким замечательным: вы можете контролировать зависимости, которые используются в ваших модулях (классах, модулях, ...), не изменяя сами эти модули. Отлично подходит для тестирования или специфики среды, как в вашем случае.
Таким образом, класс, который использует MailService
, должен быть создан фреймворком и затем может вставить MailService
с помощью:
constructor(private mailService: MailService) {}
Тогда будет использоваться экземпляр, предоставленный в вашем массиве providers
.
Если это невозможно, вы, конечно, можете иметь логику в самом классе (ах) потребления (не очень хорошо!):
const mailService = process.env.NODE_ENV === 'development'
? new MailMockService()
: new MailService();