Ced*_*ont 5 testing unit-testing asp.net-core
在owin中,可以使用TestServer在单元测试中测试web api(参见本博客).
这个功能是否适用于asp.net 5中间件?
根据下面的回答,我尝试使用TestServer,但是visual studio抱怨'名称空间名称'AspNet'在名称空间'Microsoft'中不存在(你......)
我使用Visual Studio 2015
在我的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": {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)tug*_*erk 11
它也可以在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");
}
}
Run Code Online (Sandbox Code Playgroud)
测试:
[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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在测试中找到有关TestServer类用法的更多信息.
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |