В методе расширения, вызываемом из ConfigureServices
, я добавляю экземпляр EmbeddedFileProvider
в RazorViewEngineOptions
. Я хотел бы проверить, что он добавляется, но я не могу найти, как получить экземпляр RazorViewEngineOptions
.
Это работает при запуске приложения:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddMyServices(Configuration);
}
public static IServiceCollection AddMyServices(this IServiceCollection services, IConfiguration configuration)
{
services.Configure<RazorViewEngineOptions>(options =>
{
options.FileProviders.Add(new EmbeddedFileProvider(typeof(MyClass).Assembly, "My.Namespace"));
});
return services;
}
Но как мне это проверить? A NullReferenceException
здесь брошено:
[Fact]
public void MyTest()
{
var services = new ServiceCollection();
var serviceProvider = services.BuildServiceProvider();
MyServicesBuilder.AddMyServices(services, new Mock<IConfiguration>().Object);
var razorOptions = serviceProvider.GetService<IOptions<RazorViewEngineOptions>>();
Assert.Equal(1, razorOptions.Value.FileProviders.Where(x => x.GetType() == typeof(EmbeddedFileProvider)).Count());
}
Я попытался добавить services.AddMvc()
или services.AddSingleton<RazorViewEngineOptions>()
.
Я также пытался позвонить services.GetRequiredService<RazorViewEngineOptions>()
, но это бросает System.InvalidOperationException : No service for type 'Microsoft.Extensions.Options.IOptions'1[Microsoft.AspNetCore.Mvc.Razor.RazorViewEngineOptions
Я также пытался попросить RazorViewEngineOptions
вместо IOptions<RazorViewEngineOptions>
.