Я пытаюсь создать интеграционный тест, но это также зависит от стороннего сервиса, который я хочу подделать. У меня есть консольное приложение. Net Core 3.1.
Что я имею в виду:
var configuration = GetConfiguration();
var serviceProvider = GetServiceProvider(configuration);
var appService = serviceProvider.GetService<IConsumerManager>();
appService.StartConsuming(commandLineArguments);
private static IConfiguration GetConfiguration()
=> new ConfigurationBuilder().AddJsonFile(ConfigurationFile, true, true).Build();
private static ServiceProvider GetServiceProvider(IConfiguration config)
{
IServiceCollection collection = new ServiceCollection();
collection.Configure<ConsumerConfig>(options => config.GetSection("consumerConfig").Bind(options));
collection.AddSingleton<IConsumerManager, ConsumerManager>();
collection.AddTransient<ISelfFlushingQueue, SelfFlushingQueue>();
collection.AddTransient<IConsumer, Consumer>();
collection.AddTransient<IConverter, Converter>();
collection.AddFactory<IConsumerWorker, ConsumerWorker>();
return collection.BuildServiceProvider();
}
В моем случае я хочу имитировать звонки в Consumer. И мне интересно, есть ли другой способ подделать вызовы к нему, чем просто создать класс Fake и добавить его в DI. Например:
collection.AddTransient<IConsumer, FakeConsumer>();
Может быть, я мог бы использовать FakeItEasy, NUnit или любую другую библиотеку для фальсификации этого?