Правильно ли я делаю DI (я выбрал инжекцию аргументов конструктора, поскольку наша кодовая база все еще относительно мала и проста)? Похоже, автор предлагает поместить оболочку на экземпляр клиента. Если так, я ищу идиоматический подход c.
Да, вы правы, и это, кажется, известная проблема (ссылка 1). В идеале, необходимо обернуть вокруг экземпляра клиента. Один из подходов может состоять в том, чтобы создать признак с методом, скажем connect
, расширить его до RedisCacheDao
и реализовать метод connect
, чтобы предоставить вам экземпляр клиента, когда вам потребуется. Затем все, что вам нужно сделать, это смоделировать этот интерфейс подключения, и вы сможете провести тестирование.
Другой подход может заключаться в использовании встроенного redis для модульного тестирования. хотя обычно он используется для интеграционного тестирования. Вы можете запустить простой сервер Redis, на котором тесты выполняются с помощью кода, и закрыть его, как только тестирование будет завершено.
Стоит ли мне поменяться местами с другим Redis библиотека? Библиотеки, которые активно поддерживаются, по предложению redis.io, также используют сопутствующие объекты. Я лично думаю, что это не проблема этих библиотек.
Вы, конечно, можете это сделать. Я бы предпочел Jedis , поскольку это просто, и его производительность лучше, чем scala -redis (при выполнении mget).
Дайте мне знать, если это поможет! !