Можно просто смоделировать интерфейсы, чтобы они работали так, как нужно для изолированного модульного теста.
public void Test_CacheManager() {
//Arrange
IDataManager dataservices = new Mock<IDataManager>();
IDistributedCache cache = new Mock<IDistributedCache>();
var subject = new CacheManager(dataservices.Object, cache.Object);
//Setup the mocks to behave as expected.
//Act
//...call the method under test
//Assert
//...assert the expected behavior
}
Приведенный выше пример использует Moq, чтобы продемонстрировать, как имитировать экземпляры зависимостей тестируемого класса.
Ссылка Moq Quickstart , чтобы лучше понять, как использовать библиотеку насмешек.
Если вы подключаетесь к фактическому соединению redis, то это больше не будет модульный тест, а интеграционный тест, который потребует совершенно другого подхода.
public void Test_CacheManager() {
//Arrange
IDataManager dataservices = new Mock<IDataManager>();
//Setup the mocks to behave as expected.
//Configure Redis Cache
var services = new ServiceCollection();
var redisconnection = "...";
services.AddDistributedRedisCache(o => { o.Configuration = redisconnection; });
var provider = services.BuildServiceProvider();
IDistributedCache cache = provider.GetService<IDistributedCache>();
var subject = new CacheManager(dataservices.Object, cache);
//Act
//...call the method under test
//Assert
//...assert the expected behavior
}