Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET WebAPI को कैसे टेस्ट करें?

WebAPI टेस्टिंग में रिक्वेस्ट भेजना और रिस्पॉन्स प्राप्त करना शामिल है। WebAPI टेस्ट करने के कई तरीके हैं। यहां हम Postman और Swagger का उपयोग करके WebAPI टेस्ट करेंगे।

टेस्ट सेटअप: Student मॉडल और कंट्रोलर

Student मॉडल

namespace DemoWebApplication.Models
{
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

Student कंट्रोलर

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace DemoWebApplication.Controllers
{
    public class StudentController : ApiController
    {
        List students = new List
        {
            new Student { Id = 1, Name = "Mark" },
            new Student { Id = 2, Name = "John" }
        };
        
        public IEnumerable Get()
        {
            return students;
        }
        
        public Student Get(int id)
        {
            return students.FirstOrDefault(x => x.Id == id);
        }
    }
}

विधि 1: Swagger का उपयोग करके टेस्टिंग

Swagger REST API को डॉक्यूमेंट करने के लिए एक स्पेसिफिकेशन है। यह REST वेब सर्विसेज का वर्णन करने के लिए फॉर्मेट (URL, मेथड, रिप्रेजेंटेशन) निर्दिष्ट करता है। मेथड्स, पैरामीटर्स, और मॉडल्स का विवरण सर्वर कोड में紧密 रूप से एकीकृत होता है, जिससे APIs और इसके डॉक्यूमेंटेशन में सिंक्रोनाइजेशन बना रहता है।

Swagger सेटअप

  1. NuGet से Swashbuckle या Swagger-Net इंस्टॉल करें
  2. WebApiConfig में सक्षम करें
  3. प्रोजेक्ट चलाएं और /swagger/ui/index पर जाएं
// WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    
    // Swagger कॉन्फिगरेशन
    config.EnableSwagger(c =>
    {
        c.SingleApiVersion("v1", "DemoWebApplication");
    }).EnableSwaggerUi();
}

Swagger UI के साथ टेस्टिंग

Swagger स्वचालित रूप से कंट्रोलर और उसके एक्शन मेथड्स को सूचीबद्ध करता है। हम संबंधित कंट्रोलर को एक्सपैंड करके एंडपॉइंट को अपने रिक्वेस्ट से टेस्ट कर सकते हैं।

Get All Students रिक्वेस्ट

C# ASP.NET WebAPI को कैसे टेस्ट करें?

Get All Students रिस्पॉन्स

C# ASP.NET WebAPI को कैसे टेस्ट करें?

Get Student by ID रिक्वेस्ट

C# ASP.NET WebAPI को कैसे टेस्ट करें?

Get Student by ID रिस्पॉन्स

C# ASP.NET WebAPI को कैसे टेस्ट करें?

विधि 2: Postman का उपयोग करके टेस्टिंग

Postman एक लोकप्रिय API क्लाइंट है जो डेवलपर्स के लिए APIs बनाना, शेयर करना, टेस्ट करना और डॉक्यूमेंट करना आसान बनाता है। यह यूजर्स को सिंपल और कॉम्प्लेक्स HTTP/S रिक्वेस्ट्स बनाने और सेव करने की अनुमति देता है, साथ ही उनके रिस्पॉन्स पढ़ने की भी।

Postman में टेस्टिंग

C# ASP.NET WebAPI को कैसे टेस्ट करें?

Get All Students रिक्वेस्ट और रिस्पॉन्स

C# ASP.NET WebAPI को कैसे टेस्ट करें?

Get Student by ID रिक्वेस्ट और रिस्पॉन्स

C# ASP.NET WebAPI को कैसे टेस्ट करें?

विधि 3: C# कोड से टेस्टिंग (HttpClient)

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class WebApiTester
{
    private readonly HttpClient _client;
    
    public WebApiTester(string baseUrl)
    {
        _client = new HttpClient { BaseAddress = new Uri(baseUrl) };
        _client.DefaultRequestHeaders.Accept.Add(
            new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    }
    
    public async Task> GetAllStudentsAsync()
    {
        var response = await _client.GetAsync("api/student");
        response.EnsureSuccessStatusCode();
        var json = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject>(json);
    }
    
    public async Task GetStudentAsync(int id)
    {
        var response = await _client.GetAsync($"api/student/{id}");
        if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
            return null;
        response.EnsureSuccessStatusCode();
        var json = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject(json);
    }
}

// उपयोग
var tester = new WebApiTester("https://localhost:58174/");
var all = await tester.GetAllStudentsAsync();
var one = await tester.GetStudentAsync(2);

विधि 4: यूनिट टेस्टिंग (Web API 2)

[TestClass]
public class StudentControllerTests
{
    [TestMethod]
    public async Task Get_ReturnsAllStudents()
    {
        // Arrange
        var controller = new StudentController();
        controller.Request = new HttpRequestMessage();
        controller.Configuration = new HttpConfiguration();
        
        // Act
        var result = await controller.Get() as OkNegotiatedContentResult>;
        
        // Assert
        Assert.IsNotNull(result);
        Assert.AreEqual(2, result.Content.Count);
    }
    
    [TestMethod]
    public async Task Get_ReturnsStudentById()
    {
        var controller = new StudentController();
        controller.Request = new HttpRequestMessage();
        controller.Configuration = new HttpConfiguration();
        
        var result = await controller.Get(1) as OkNegotiatedContentResult;
        
        Assert.IsNotNull(result);
        Assert.AreEqual("Mark", result.Content.Name);
    }
}

विधि 5: ASP.NET Core में इंटीग्रेशन टेस्टिंग (TestServer)

public class StudentApiTests : IClassFixture>
{
    private readonly HttpClient _client;
    
    public StudentApiTests(WebApplicationFactory factory)
    {
        _client = factory.CreateClient();
    }
    
    [Fact]
    public async Task GetAll_ReturnsStudents()
    {
        var response = await _client.GetAsync("/api/student");
        response.EnsureSuccessStatusCode();
        
        var students = await response.Content.ReadFromJsonAsync>();
        Assert.Equal(2, students.Count);
    }
}

टेस्टिंग टूल्स तुलना

टूलप्रकारसर्वश्रेष्ठ लिएलर्निंग कर्व
Swagger UIइंटीग्रेटेड डॉक्स + टेस्टडेवलपमेंट के दौरान क्विक मैनुअल टेस्टिंगकम
Postmanस्टैंडअलोन क्लाइंटकॉम्प्लेक्स टेस्ट सीरीज, ऑटोमेशन, टीम कोलैबोरेशनमध्यम
HttpClient (कोड)प्रोग्रामेटिकइंटीग्रेशन टेस्ट्स, CI/CD पाइपलाइन्समध्यम
Unit Testsआइसोलेटेडबिजनेस लॉजिक वैलिडेशन, फास्ट फीडबैकमध्यम
TestServerइन-मेमोरी इंटीग्रेशनफुल पाइपलाइन टेस्टिंग बिना नेटवर्क केउच्च

सिफारिश: डेवलपमेंट के दौरान Swagger, मैनुअल एक्सप्लोरेशन के लिए Postman, CI/CD के लिए ऑटोमेटेड इंटीग्रेशन टेस्ट्स, और बिजनेस लॉजिक के लिए यूनिट टेस्ट्स का उपयोग करें।

  1. C# ASP.NET WebAPI में एक्शन मेथड के लिए उपनाम (Alias) नाम कैसे असाइन करें? C# ASP.NET WebAPI में एक्शन मेथड के लिए उपनाम (Alias) नाम कैसे असाइन करें?

    कंट्रोलर में एक पब्लिक मेथड को एक्शन मेथड कहा जाता है। आइए एक उदाहरण पर विचार करें जहां DemoController क्लास ApiController से डेराइव्ड है और इसमें कई एक्शन मेथड्स हैं जिनके नाम HTTP वर्ब्स जैसे Get, Post, Put और Delete से मेल खाते हैं। उदाहरण public class DemoController : ApiController { public

  1. C# ASP.NET WebAPI में CORS समस्या कैसे हल करें? C# ASP.NET WebAPI में CORS समस्या कैसे हल करें?

    क्रॉस-ओरिजिन रिसोर्स शेयरिंग (CORS) एक ऐसा तंत्र है जो ब्राउज़रों को यह बताने के लिए अतिरिक्त HTTP हेडर्स का उपयोग करता है कि एक ओरिजिन पर चल रहे वेब एप्लिकेशन को किसी अलग ओरिजिन से चुनिंदा रिसोर्सेज तक पहुंच दी जाए। एक वेब एप्लिकेशन एक क्रॉस-ओरिजिन HTTP रिक्वेस्ट निष्पादित करता है जब वह किसी ऐसे रि

  1. C# ASP.NET WebAPI में एक्शन मेथड से कस्टम रिजल्ट टाइप कैसे लौटाएं? C# ASP.NET WebAPI में एक्शन मेथड से कस्टम रिजल्ट टाइप कैसे लौटाएं?

    हम IHttpActionResult इंटरफ़ेस को इम्प्लीमेंट करके अपनी खुद की कस्टम क्लास को रिजल्ट टाइप के रूप में बना सकते हैं। IHttpActionResult में एक सिंगल मेथड, ExecuteAsync होता है, जो एसिंक्रोनसली एक HttpResponseMessage इंस्टेंस बनाता है। public interface IHttpActionResult { Task ExecuteAsync(Cancellat