мой пост является расширением поста Как выполнить модульное тестирование Startup.cs в .NET Core
Я попытался выполнить модульное тестирование класса Startup.ca с помощью этого (тот же код тогдапредыдущий пост):
[TestMethod]
public void ConfigureServices_RegistersDependenciesCorrectly()
{
// Arrange
// Setting up the stuff required for Configuration.GetConnectionString("DefaultConnection")
Mock<IConfigurationSection> configurationSectionStub = new Mock<IConfigurationSection>();
configurationSectionStub.Setup(x => x["DefaultConnection"]).Returns("TestConnectionString");
Mock<Microsoft.Extensions.Configuration.IConfiguration> configurationStub = new Mock<Microsoft.Extensions.Configuration.IConfiguration>();
configurationStub.Setup(x => x.GetSection("ConnectionStrings")).Returns(configurationSectionStub.Object);
IServiceCollection services = new ServiceCollection();
var target = new Startup(configurationStub.Object);
// Act
target.ConfigureServices(services);
// Mimic internal asp.net core logic.
services.AddTransient<TestController>();
// Assert
var serviceProvider = services.BuildServiceProvider();
var controller = serviceProvider.GetService<TestController>();
Assert.IsNotNull(controller);
}
Но я получил ошибку в строке target.ConfigureServices (services);когда я запускаю тест.Я получил сообщение об ошибке:
Сообщение: метод тестирования Project.Services.PublicReporting.Tests.StartupTests.ConfigureServices_RegistersDependenciesCorely выдает исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку. Microsoft.Extensions.Caching.Memory, версия = 2.1.2.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60 'или одна из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040) ---> System.IO.FileLoadException: не удалось загрузить файл или сборку 'Microsoft.Extensions.Caching.Memory, версия = 2.1.1.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60' или одна из еезависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.(Исключение из HRESULT: 0x80131040)
Это потому, что мы вызываем ConfigureService и происходит сбой служб .AddResponseCaching ();
Это мой метод службы конфигурации, он завершается как второйлиния.
public void ConfigureServices(IServiceCollection services)
{
services.RegisterApplicationComponents();
services.AddResponseCaching();
}
Я думаю, что проблема в том, что, когда мы высмеиваем класс, я не могу выяснить, какую правильную настройку нам нужно иметь, чтобы метод AddResponseCaching () прошел.Кто-нибудь знает, чего не хватает в configurationSectionStub.Setup или, может быть, нам нужно высмеивать поведение службы?
спасибо!