HTTP Requests এর জন্য Fake Responses তৈরি করা

Testing Asynchronous Code এবং Ajax Requests - জ্যাসমিনজেএস (JasmineJS) - Web Development

236

JasmineJS এ যখন আপনি HTTP requests পরীক্ষা করেন, তখন সত্যিকারের HTTP request পাঠানো এবং তার প্রতিক্রিয়া (response) পাওয়ার বদলে আপনি Fake Responses তৈরি করতে পারেন। এটি টেস্টিং প্রক্রিয়াকে দ্রুত, নির্ভরযোগ্য এবং বিচ্ছিন্ন (isolated) করে তোলে, কারণ আপনি আসল সার্ভারের ওপর নির্ভর না করে সিমুলেটেড প্রতিক্রিয়া ব্যবহার করতে পারবেন। JasmineJS এ Spies এবং Mocking এর মাধ্যমে Fake HTTP Responses তৈরি করা যেতে পারে।


Fake HTTP Responses এর প্রয়োজনীয়তা

টেস্টিংয়ের সময় HTTP requests এর জন্য আসল সার্ভার ব্যবহার করলে কিছু সমস্যা হতে পারে:

  • ধীরগতির প্রতিক্রিয়া: বাস্তব HTTP requests অনেক সময় নিতে পারে।
  • নেটওয়ার্ক সমস্যা: নেটওয়ার্ক ইস্যুর কারণে টেস্ট ব্যর্থ হতে পারে।
  • অপ্রত্যাশিত ফলাফল: সার্ভার থেকে আসল ডেটা পরিবর্তিত হতে পারে, যা টেস্টের ফলাফলে প্রভাব ফেলতে পারে।

এজন্য JasmineJS তে Fake HTTP Responses ব্যবহার করা হয়, যা নির্দিষ্ট ডেটা প্রদান করে এবং সার্ভার বা নেটওয়ার্ক পরিস্থিতির ওপর নির্ভরশীলতা কমিয়ে আনে।


JasmineJS এ Fake Responses তৈরি করা

JasmineJS এ Fake HTTP Responses তৈরি করতে মূলত Spies এবং jasmine.Ajax এর মতো টুলস ব্যবহার করা হয়। Jasmine এর jasmine-ajax প্লাগইন ব্যবহার করলে আপনি HTTP requests এবং তাদের responses মক করতে পারেন।

১. jasmine-ajax ইনস্টলেশন

প্রথমে আপনাকে jasmine-ajax প্লাগইনটি ইনস্টল করতে হবে, যা Jasmine এর মাধ্যমে AJAX টেস্টিংকে সহজ করে তোলে।

npm এর মাধ্যমে ইনস্টল করতে পারেন:

npm install jasmine-ajax --save-dev

এটি আপনার package.json ফাইলে ডিপেনডেন্সি হিসেবে যুক্ত হবে।

২. Jasmine Ajax কনফিগারেশন

আপনি beforeEach() বা beforeAll() মেথডে jasmine.Ajax.install() কল করতে পারেন, যাতে Jasmine AJAX প্লাগইন ইনস্টল হয় এবং পরে jasmine.Ajax.uninstall() দিয়ে প্লাগইনটি আনইনস্টল করতে পারেন।

beforeEach(function() {
  jasmine.Ajax.install();  // jasmine-ajax ইনস্টল করা
});

afterEach(function() {
  jasmine.Ajax.uninstall();  // jasmine-ajax আনইনস্টল করা
});

Fake HTTP Response তৈরি করা

একবার Jasmine Ajax প্লাগইন ইনস্টল হলে, আপনি সহজেই Fake HTTP Response তৈরি করতে পারবেন। এখানে jasmine.Ajax.requests.mostRecent() ব্যবহার করে সবার সর্বশেষ HTTP request পেতে পারবেন এবং তার প্রতিক্রিয়া (response) সিমুলেট করতে পারবেন।

উদাহরণ:

ধরা যাক, আমাদের একটি ফাংশন আছে যা HTTP GET request পাঠায় এবং সার্ভার থেকে ডেটা নিয়ে আসে। আমরা এটির জন্য Fake Response তৈরি করব।

describe("Fake HTTP Responses with jasmine-ajax", function() {
  let xhr;

  beforeEach(function() {
    jasmine.Ajax.install();  // jasmine-ajax ইনস্টল করা
  });

  afterEach(function() {
    jasmine.Ajax.uninstall();  // jasmine-ajax আনইনস্টল করা
  });

  it("should return a fake response from the server", function() {
    const successCallback = jasmine.createSpy("successCallback");
    
    // HTTP GET request করা
    const xhr = new XMLHttpRequest();
    xhr.open("GET", "/api/data", true);
    xhr.onload = function() {
      successCallback(xhr.responseText);
    };
    xhr.send();

    // Fake response তৈরি করা
    const request = jasmine.Ajax.requests.mostRecent();
    request.respondWith({
      status: 200,
      responseText: '{"data": "This is a fake response"}'
    });

    // টেস্ট যাচাই
    expect(successCallback).toHaveBeenCalledWith('{"data": "This is a fake response"}');
  });
});

এখানে:

  • jasmine.Ajax.requests.mostRecent(): এটি সর্বশেষ HTTP request টিকে রিটার্ন করে।
  • request.respondWith(): এটি Fake Response তৈরি করে। আপনি এখানে status code, responseText বা অন্যান্য HTTP প্রোপার্টি নির্ধারণ করতে পারেন।

Fake POST Request এর জন্য Fake Response

এটি একটি POST request এর জন্যও কার্যকর। ধরা যাক, আমরা একটি POST request পাঠাতে চাই, যেখানে JSON ডেটা পাঠানো হচ্ছে।

describe("Fake POST Request with jasmine-ajax", function() {
  let xhr;

  beforeEach(function() {
    jasmine.Ajax.install();
  });

  afterEach(function() {
    jasmine.Ajax.uninstall();
  });

  it("should return a fake response for a POST request", function() {
    const postData = { name: "John", age: 30 };
    const successCallback = jasmine.createSpy("successCallback");

    // HTTP POST request পাঠানো
    const xhr = new XMLHttpRequest();
    xhr.open("POST", "/api/user", true);
    xhr.setRequestHeader("Content-Type", "application/json");
    xhr.onload = function() {
      successCallback(xhr.responseText);
    };
    xhr.send(JSON.stringify(postData));

    // Fake response তৈরি করা
    const request = jasmine.Ajax.requests.mostRecent();
    request.respondWith({
      status: 201,
      responseText: '{"message": "User created successfully"}'
    });

    // টেস্ট যাচাই
    expect(successCallback).toHaveBeenCalledWith('{"message": "User created successfully"}');
  });
});

এখানে:

  • xhr.send(JSON.stringify(postData)): JSON ডেটা পোস্ট করা হচ্ছে।
  • request.respondWith(): POST request এর জন্য Fake response তৈরি করা হচ্ছে।

Fake Responses এর বিভিন্ন বৈশিষ্ট্য

Jasmine-ajax এর মাধ্যমে আপনি বিভিন্ন ধরনের Fake Response তৈরি করতে পারেন:

  • status: HTTP স্ট্যাটাস কোড (যেমন 200, 404, 500) নির্ধারণ করতে পারেন।
  • responseText: সার্ভারের কাছ থেকে প্রাপ্ত ডেটা (যেমন JSON বা plain text) নির্ধারণ করতে পারেন।
  • headers: আপনি প্রয়োজন অনুসারে custom HTTP headers ব্যবহার করতে পারেন।
  • timeout: আপনি request এর timeout কনফিগার করতে পারেন।
request.respondWith({
  status: 404,
  statusText: "Not Found",
  responseText: '{"error": "Not found"}',
  responseHeaders: { "Content-Type": "application/json" }
});

সারাংশ

JasmineJS এ Fake HTTP Responses তৈরি করার মাধ্যমে আপনি HTTP requests এর কার্যকারিতা এবং প্রতিক্রিয়া সহজেই মক করতে পারেন, যা টেস্টিং প্রক্রিয়াকে দ্রুত এবং নির্ভরযোগ্য করে তোলে। jasmine-ajax প্লাগইন ব্যবহার করে আপনি HTTP requests সিমুলেট করতে পারেন এবং প্রয়োজনীয় Fake Responses তৈরি করতে পারেন। এটি টেস্টিংয়ের সময় আসল সার্ভার বা নেটওয়ার্ক সমস্যার প্রভাব কমিয়ে আনে, ফলে টেস্ট কেসগুলো আরও সঠিকভাবে এবং দ্রুত সম্পন্ন হয়।

Content added By
Promotion

Are you sure to start over?

Loading...