Скажем, у меня есть экспресс-маршрут, который обрабатывается контроллером. Контроллер использует службу, а служба использует репозиторий для взаимодействия с источником данных.
Я хочу создать интеграционный тест, используя Supertest, чтобы проверить этот маршрут:
test -> my Express app -> controller -> service -> repository -> data source
Моя проблема в том, что мне нужно имитировать репозиторий / источник данных, чтобы запустить тест! Я хочу жестко закодировать некоторые значения, как если бы они поступали из реального источника данных. Какие у меня варианты?
В мире Java я бы использовал инъекцию зависимостей с помощью Spring или Guice, и таким образом я бы заменил репозиторий на макетную версию. Каковы шаблоны для достижения такого рода насмешек в мире Typescript / Node.js?
Я предполагаю, что, используя простой Javascript, я мог бы использовать Proxyquire
и его функцию глобально переопределить требование, чтобы макет репозитория из самого теста. Но я не уверен, что это хорошо работает с Typescript.
Итак, каковы рекомендуемые способы имитации «глубокого» компонента (транзитивной зависимости) из тестового файла с помощью Typescript и Node.js?
IoC.use(..)
, поэтому в моем тестовом файле начальной загрузки я добавляю свои папки макетов, чтобы он сначала смотрел туда, и разрешил мой источник фиктивных данных вместо источника данных в моем другом папки или модули узлов. - person Liam Gray   schedule 28.02.2017