【问题标题】:how do I unit test a post (web-api) call with a token?如何使用令牌对帖子(web-api)调用进行单元测试?
【发布时间】:2014-07-10 10:22:54
【问题描述】:

我有一个 httppost web api 方法。我需要传入一个令牌作为授权标头并收集响应。

我正在使用 web-api 2。我的 post 方法返回 IHttpActionResult ok(model)。

我已经使用 POSTMAN rest 客户端测试了 web-api,它可以工作。

我被困在一个点上,我无法编写 UNIT-TEST 来测试我的 API。

另外,我不能将单元测试项目和 web-api 项目放在同一个解决方案中吗?我尝试将单元测试项目和 web-api 项目设置为启动项目。但是单元测试项目只是一个库,因此无法正常工作。

有人可以指导我完成这个吗?

【问题讨论】:

    标签: unit-testing web-applications asp.net-web-api asp.net-web-api2 dotnet-httpclient


    【解决方案1】:

    首先,您通常将单元测试项目和 Api 项目放在同一个解决方案中。但是 API 项目应该是启动项目。然后,您可以使用 Visual Studio 测试资源管理器或其他等效工具(f.x. 构建服务器)来运行您的单元测试。

    要测试您的 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.
    
            }
        }
    

    但是,您必须使用依赖注入来注入您的模拟/存根。您必须在测试项目的启动类中配置依赖注入。

    Here's 一篇文章,更详细地解释了 Owin 测试服务器和启动类。

    【讨论】:

    猜你喜欢
    • 2018-12-23
    • 2015-11-29
    • 1970-01-01
    • 2023-03-29
    • 2015-11-09
    • 2013-11-09
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多