Table of Contents

WebHostTestFactory Class

Definition

Namespace
Codebelt.Extensions.Xunit.Hosting.AspNetCore
Assemblies
Codebelt.Extensions.Xunit.Hosting.AspNetCore.dll
Source
src/Codebelt.Extensions.Xunit.Hosting.AspNetCore/WebHostTestFactory.cs

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.

See Also