Skip to content

nwendel/RouteTester.AspNetCore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RouteTester.AspNetCore Build Coverage

NuGet Package

Install-Package RouteTester.AspNetCore

Example

public class Example
{
    private readonly TestApplicationFactory _factory = new();

    [Fact]
    public async Task CanRoute()
    {
        await RouteAssert.ForAsync(
            _server,
            request => request.WithPathAndQuery("/some-route"),
            assert => assert.MapsTo<HomeController>(a => a.SomeRoute()));
    }

    [Fact]
    public async Task CanRouteWithArguments()
    {
        await RouteAssert.ForAsync(
            _server,
            request => request.WithPathAndQuery("/some-other-route?parameter=value"),
            assert => assert.MapsTo<HomeController>(a => a.SomeOtherRoute("value")));
    }
}

public class TestApplicationFactory : WebApplicationFactory<Program>
{
    protected override IWebHostBuilder? CreateWebHostBuilder()
    {
        var builder = new WebHostBuilder();
        builder.UseStartup<TestStartup>();

        return builder;
    }

    private sealed class TestStartup
    {
        public static void ConfigureServices(IServiceCollection serviceCollection)
        {
            serviceCollection
                .AddMvc()
                .AddApplicationPart(typeof(Program).Assembly);
            serviceCollection.MvcRouteTester();
        }

        public static void Configure(IApplicationBuilder app)
        {
            app.UseRouting();

            app.UseEndpoints(x =>
            {
                x.MapControllers();
            });
        }
    }
}