WebHostTestFactory Class
Definition
- Namespace
- Codebelt.Extensions.Xunit.Hosting.AspNetCore
- Assemblies
- Codebelt.Extensions.Xunit.Hosting.AspNetCore.dll
Provides a set of static methods for ASP.NET Core (including, but not limited to MVC, Razor and related) unit testing.
public static class WebHostTestFactory
- Inheritance
-
WebHostTestFactory
Examples
Use WebHostTestFactory when the test defines a conventional ASP.NET Core service collection and middleware pipeline instead of bootstrapping an application entry point. RunAsync starts that pipeline on TestServer, sends a request, and returns the response so the caller can verify middleware behavior.
using System.Threading.Tasks;
using Codebelt.Extensions.Xunit.Hosting.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace RequestPipeline.Tests;
public sealed class WebHostTestFactoryExample
{
public async Task<string> InvokeStatusMiddlewareAsync()
{
using var response = await WebHostTestFactory.RunAsync(
services => services.AddSingleton(new PipelineStatus("ready")),
app => app.Run(context =>
{
var status = context.RequestServices.GetRequiredService<PipelineStatus>();
return context.Response.WriteAsync(status.Value);
})).ConfigureAwait(false);
return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
}
}
public sealed record PipelineStatus(string Value);
Methods
| Name | Description |
|---|---|
| Create(Action<IServiceCollection>, Action<IApplicationBuilder>, Action<IHostBuilder>, IWebHostFixture) | Creates and returns an IWebHostTest implementation. |
| CreateWithHostBuilderContext(Action<HostBuilderContext, IServiceCollection>, Action<HostBuilderContext, IApplicationBuilder>, Action<IHostBuilder>, IWebHostFixture) | Creates and returns an IWebHostTest implementation. |
| RunAsync(Action<IServiceCollection>, Action<IApplicationBuilder>, Action<IHostBuilder>, Func<HttpClient, Task<HttpResponseMessage>>, IWebHostFixture) | Runs a middleware and returns an HttpClient for making HTTP requests to the test server. |
| RunWithHostBuilderContextAsync(Action<HostBuilderContext, IServiceCollection>, Action<HostBuilderContext, IApplicationBuilder>, Action<IHostBuilder>, Func<HttpClient, Task<HttpResponseMessage>>, IWebHostFixture) | Runs a filter/middleware test. |