Unit testing 如何使用令牌对post(web api)调用进行单元测试?
我有一个httppostwebapi方法。我需要传入一个令牌作为授权头并收集响应 我正在使用WebAPI2。我的post方法返回IHttpActionResult ok(模型) 我已经使用POSTMAN rest客户端测试了web api,它可以正常工作 我被困在一个点上,在这个点上,我无法编写一个单元测试来测试我的API 另外,我不能在同一个解决方案中使用单元测试项目和webapi项目吗?我尝试将单元测试项目和WebAPI项目设置为启动项目。但单元测试项目只是一个库,所以不起作用Unit testing 如何使用令牌对post(web api)调用进行单元测试?,unit-testing,web-applications,asp.net-web-api,asp.net-web-api2,dotnet-httpclient,Unit Testing,Web Applications,Asp.net Web Api,Asp.net Web Api2,Dotnet Httpclient,我有一个httppostwebapi方法。我需要传入一个令牌作为授权头并收集响应 我正在使用WebAPI2。我的post方法返回IHttpActionResult ok(模型) 我已经使用POSTMAN rest客户端测试了web api,它可以正常工作 我被困在一个点上,在这个点上,我无法编写一个单元测试来测试我的API 另外,我不能在同一个解决方案中使用单元测试项目和webapi项目吗?我尝试将单元测试项目和WebAPI项目设置为启动项目。但单元测试项目只是一个库,所以不起作用 有人能给我介
有人能给我介绍一下吗?首先,单元测试项目和Api项目通常位于同一个解决方案中。然而,API项目应该是启动项目。然后使用VisualStudioTestExplorer或其他等效工具(f.x.a构建服务器)运行单元测试 为了测试API控制器,我建议您在单元测试中创建一个Owin测试服务器,并使用它对API执行HTTP请求
[TestMethod]
public async Task ApiTest()
{
using (var server = TestServer.Create<Startup>())
{
var response = await server
.CreateRequest("/api/action-to-test")
.AddHeader("Content-type", "application/json")
.AddHeader("Authorization", "Bearer <insert token here>")
.GetAsync();
// Do what you want to with the response from the api.
// You can assert status code for example.
}
}
[TestMethod]
公共异步任务ApiTest()
{
使用(var server=TestServer.Create())
{
var response=wait服务器
.CreateRequest(“/api/要测试的操作”)
.AddHeader(“内容类型”、“应用程序/json”)
.AddHeader(“授权”、“持票人”)
.GetAsync();
//对来自api的响应执行您想要的操作。
//例如,您可以断言状态代码。
}
}
但是,您必须使用依赖项注入来注入模拟/存根。您必须在测试项目的启动类中配置依赖项注入
这篇文章更详细地解释了Owin测试服务器和启动类。有关测试身份验证的信息,请参阅本文-