从 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' 中不存在(你是.....'
我用Visual Studio2015
在我的 nuget 源(设置)中我有 (https://www.myget.org/F/aspnetmaster/)
(我也试过https://www.myget.org/F/aspnetvnext/,但遇到了同样的问题)
这是我的 project.json 文件
{
"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": {
}
}
}
}
它在 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.
用法的更多信息
在 owin 中,可以使用 TestServer 在单元测试中测试 Web api(请参阅此 blog)。
此功能可用于 asp.net 5 中间件吗?
更新:
根据以下回复,我尝试使用 TestServer,但 visual studio 抱怨 '类型或名称空间名称 'AspNet'在命名空间 'Microsoft' 中不存在(你是.....'
我用Visual Studio2015
在我的 nuget 源(设置)中我有 (https://www.myget.org/F/aspnetmaster/) (我也试过https://www.myget.org/F/aspnetvnext/,但遇到了同样的问题)
这是我的 project.json 文件
{ "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": { } } } }
它在 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.
用法的更多信息