从 TestServer 测试 asp.net 5 个 vnext 中间件

Testing asp.net 5 vnext middleware from a TestServer

在 owin 中,可以使用 TestServer 在单元测试中测试 Web api(请参阅此 blog)。

此功能可用于 asp.net 5 中间件吗?

更新:

根据以下回复,我尝试使用 TestServer,但 visual studio 抱怨 '类型或名称空间名称 'AspNet'在命名空间 'Microsoft' 中不存在(你是.....'

它在 ASP.NET 5 上也可用:Microsoft.AspNet.TestHost

这是一个示例。中间件:

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");
    }
}

测试:

[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);
    }
}

您可以找到有关 TestServer class on the tests.

用法的更多信息