In owin, its possible to test a web api in unit test using a TestServer (see this blog).
Is this functionality available for asp.net 5 middleware ?
based on responses below, I tried to use TestServer, but visual studio complains that 'The type or namespace name 'AspNet' does not exist in the namespace 'Microsoft' (are you .....'
I use Visual Studio 2015
in my nuget sources (settings) I have (https://www.myget.org/F/aspnetmaster/) (I also tried with https://www.myget.org/F/aspnetvnext/, but got the same problem)
here is my project.json file
{
    "version": "1.0.0-*",
    "dependencies": {
        "Microsoft.AspNet.Http": "1.0.0-*",        
        "Microsoft.AspNet.TestHost":  "1.0.0-*",
        "Microsoft.AspNet.Hosting":  "1.0.0-*", 
        "Microsoft.AspNet.Testing" :  "1.0.0-*",
        "xunit": "2.1.0-beta1-*",
        "xunit.runner.aspnet": "2.1.0-beta1-*",
        "Moq": "4.2.1312.1622",
        "Shouldly": "2.4.0"
    },
    "commands": {
        "test": "xunit.runner.aspnet"
    },
    "frameworks" : {
        "aspnet50" : {
            "dependencies": {
            }
        }
    }
}
Testing the crucial connections between your systems to check they're providing the right data to the right processes - and getting the right results.
It is available on ASP.NET 5 as well: Microsoft.AspNet.TestHost.
Here is a sample. Middleware:
public class DummyMiddleware
{
    private readonly RequestDelegate _next;
    public DummyMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task Invoke(HttpContext context)
    {
        Console.WriteLine("DummyMiddleware");
        context.Response.ContentType = "text/html";
        context.Response.StatusCode = 200;
        await context.Response.WriteAsync("hello world");
    }
}
Test:
[Fact]
public async Task Should_give_200_Response()
{
    var server = TestServer.Create((app) => 
    {
        app.UseMiddleware<DummyMiddleware>();
    });
    using(server)
    {
        var response = await server.CreateClient().GetAsync("/");
        Assert.Equal(HttpStatusCode.OK, response.StatusCode);
    }
}
You can find more about the usage of the TestServer class on the tests.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With