如何测试接收类的 Web api 发布方法

本文关键字:api Web 布方法 方法 何测试 测试 | 更新日期: 2023-09-27 17:57:12

我创建了一个 ASP.NET Web API,其中包含一个名为ImageSaveController的控制器。这有一个将数据插入数据库的InsertImage方法,是一种HttpPost方法。此方法接收 ImageData 类型的对象作为参数。控制器和参数类的代码如下所示:

public class ImageSaveController : ApiController
{
    [HttpPost]
    public IHttpActionResult InsertImage(ImageData imageData)
    {
        System.Data.SqlClient.SqlConnection conn = null;
        try
        {               
            //Image save to database code here
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.NotModified, ex.Message);
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
        return Content(HttpStatusCode.OK,""); 
    }
}
//ImageData class
public class ImageData
{
    public int Id { get; set; }
    public byte[] ImageValue { get; set; }
}

我想从客户端测试它。如您所见,ImageData类的 ImageValue 属性是一个byte数组。不确定如何将 C# 类参数传递给此方法。理想情况下,我想将参数作为json传递,但我不确定如何为此目的构建json。我也不确定是否可以使用名为邮递员的chrome应用程序进行测试。

如何测试接收类的 Web api 发布方法

打开邮递员 输入您的操作网址:
添加标头:内容类型 - 应用程序/json。
在正文选项卡中,选中"原始"(JSON)并键入数据。

POST /api/ImageSave/InsertImage/ HTTP/1.1
Host: localhost:32378
Content-Type: application/json
Cache-Control: no-cache
{
    "id" : 1,
    "imageValue" : [11,141,123,121]
}

源 Web API 2 POST 请求模拟在 POSTMAN Rest 客户端

如果你想做好的测试,更好的解决方案是编写单元测试。

这是我用来做的:使用像Postman或Fiddler这样的REST客户端测试器。我使用Postman,这是一个谷歌浏览器的应用程序。

为了便于构建 JSON,您可以在控制器上创建一个 HttpGet 方法,并返回一个假构造ImageData并从 Postman 调用它。在这里,您将看到 JSON 并将其用于 POST 方法的输入。

public class ImageSaveController : ApiController
{
    public ImageData Get()
    {
         return new ImageData
         {
             // insert test data here
         };
    }
    [HttpPost]
    public IHttpActionResult InsertImage(ImageData imageData)
    {
        System.Data.SqlClient.SqlConnection conn = null;
        try
        {               
            //Image save to database code here
        }
        catch (Exception ex)
        {
            return Content(HttpStatusCode.NotModified, ex.Message);
        }
        finally
        {
            if (conn != null)
                conn.Close();
        }
        return Content(HttpStatusCode.OK,""); 
    }
}