Web Development Jasmine এবং Karma দিয়ে Angular Testing গাইড ও নোট

272

MeanJS স্ট্যাকের মধ্যে AngularJS এর জন্য unit testing এবং end-to-end testing অত্যন্ত গুরুত্বপূর্ণ। এতে, অ্যাপ্লিকেশনটি উন্নয়নের প্রতিটি স্তরে সঠিকভাবে কাজ করছে কিনা তা নিশ্চিত করা হয়। Jasmine এবং Karma হল জনপ্রিয় টুলস যা AngularJS অ্যাপ্লিকেশনে টেস্টিং করার জন্য ব্যবহৃত হয়।

এখানে আমরা Jasmine এবং Karma ব্যবহার করে Angular Testing নিয়ে আলোচনা করব।


১. Jasmine - টেস্টিং ফ্রেমওয়ার্ক

Jasmine একটি behavior-driven development (BDD) টেস্টিং ফ্রেমওয়ার্ক যা JavaScript কোডের জন্য ব্যবহার করা হয়। এটি সিনট্যাক্সে সহজ এবং অ্যাসারশন ফিচার প্রদান করে, যা আমাদের unit testing করার জন্য সহায়ক।

Jasmine এর সাথে AngularJS Testing

AngularJS অ্যাপ্লিকেশন টেস্টিং করার জন্য Jasmine ব্যবহার করতে হলে আপনাকে কিছু বেসিক সিনট্যাক্স এবং কাঠামো জানতে হবে। নিচে একটি সাধারণ Jasmine টেস্ট কেসের উদাহরণ দেওয়া হল:

// Example Jasmine Test for AngularJS Controller

describe('UserController', function() {
  var $controller;

  // AngularJS এর মডিউল ইনজেক্ট করা
  beforeEach(module('meanApp'));

  var $scope;

  // Controller তৈরি করা
  beforeEach(inject(function(_$controller_) {
    $controller = _$controller_;
    $scope = {};
    $controller('UserController', { $scope: $scope });
  }));

  it('should set the user name correctly', function() {
    $scope.user = { name: 'John Doe' };
    expect($scope.user.name).toBe('John Doe');  // Expectation (assertion)
  });

});

এখানে:

  • describe(): টেস্ট কেস গ্রুপ করার জন্য ব্যবহৃত হয়।
  • it(): একটি নির্দিষ্ট টেস্ট কেস। এখানে আমরা $scope.user.name চেক করছি।
  • expect(): একটি assertion, যেটি সঠিক ফলাফল পাওয়ার জন্য অপেক্ষা করে।

২. Karma - টেস্ট রানার

Karma হল একটি টেস্ট রানার যা Jasmine এর মতো টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে এবং আপনার কোডের টেস্ট রান করার প্রক্রিয়াটি সহজ করে দেয়। এটি আপনার ব্রাউজারে টেস্ট কেস চালাতে পারে এবং রিয়েল-টাইমে ফলাফল দেখাতে পারে।

Karma ইনস্টল এবং কনফিগারেশন

Karma এবং Jasmine ব্যবহার করার জন্য প্রথমে আপনাকে npm এর মাধ্যমে Karma ইনস্টল করতে হবে।

npm install karma karma-jasmine karma-chrome-launcher --save-dev

এখানে:

  • karma-jasmine: Karma এর সাথে Jasmine ইন্টিগ্রেট করার জন্য।
  • karma-chrome-launcher: টেস্ট চালানোর জন্য Chrome ব্রাউজার ব্যবহার করতে।

Karma কনফিগারেশন ফাইল তৈরি করা

Karma কনফিগারেশন ফাইল (karma.conf.js) তৈরি করতে:

karma init karma.conf.js

এটি আপনাকে একটি কনফিগারেশন ফাইল তৈরি করতে সহায়তা করবে। কনফিগারেশন ফাইলের মধ্যে আপনি টেস্ট ফাইলগুলোর সিস্টেম, ব্রাউজার এবং টেস্টিং ফ্রেমওয়ার্ক কনফিগার করতে পারবেন। একটি সাধারণ কনফিগারেশন উদাহরণ নিচে দেওয়া হল:

module.exports = function(config) {
  config.set({
    frameworks: ['jasmine'],
    files: [
      'src/**/*.js',    // টেস্ট করার জন্য কোড ফাইল
      'test/**/*.spec.js' // টেস্ট ফাইল
    ],
    browsers: ['Chrome'],  // Chrome ব্রাউজার দিয়ে টেস্ট চালানো হবে
    reporters: ['progress'],
    singleRun: true
  });
};

এখানে:

  • frameworks: টেস্টিং ফ্রেমওয়ার্ক (যেমন Jasmine) সেট করা হয়েছে।
  • files: টেস্ট ফাইল এবং কোড ফাইলের পাথ দেওয়া হয়েছে।
  • browsers: এখানে টেস্ট Chrome ব্রাউজারে চালানোর জন্য কনফিগার করা হয়েছে।
  • singleRun: একবার টেস্ট চালানোর জন্য সেট করা হয়েছে।

Karma টেস্ট রান করা

Karma দিয়ে টেস্ট রান করতে:

karma start karma.conf.js

এটি আপনার কনফিগারেশন ফাইল ব্যবহার করে টেস্ট চালাবে এবং টেস্ট ফলাফল আপনাকে দেখাবে।


৩. Angular Testing Framework Integration

Angular অ্যাপ্লিকেশনে Jasmine এবং Karma ইন্টিগ্রেশন ব্যবহার করে আপনি unit tests, component tests, service tests, এবং directive tests করতে পারবেন। Angular CLI এই টেস্টিং সিস্টেমে ইতিমধ্যে Jasmine এবং Karma কনফিগার করে দেয়, যাতে সেটআপ এবং কনফিগারেশন আরও সহজ হয়।

Angular CLI Testing

Angular CLI ব্যবহার করে একটি অ্যাপ্লিকেশনে Jasmine এবং Karma সেটআপ করতে:

  1. একটি নতুন অ্যাপ তৈরি করুন:
ng new meanjs-testing-app
  1. অ্যাপের মধ্যে টেস্ট চালানোর জন্য:
ng test

এই কমান্ডটি Karma টেস্ট রানার ব্যবহার করে আপনার অ্যাপ্লিকেশনের টেস্ট চালাবে।

Testing Angular Components

Angular components টেস্ট করার জন্য, Jasmine এবং Karma এর সাথে Angular TestBed ব্যবহার করা হয়।

// Example Angular Component Test

import { ComponentFixture, TestBed } from '@angular/core/testing';
import { UserComponent } from './user.component';

describe('UserComponent', () => {
  let component: UserComponent;
  let fixture: ComponentFixture<UserComponent>;

  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [UserComponent]
    });

    fixture = TestBed.createComponent(UserComponent);
    component = fixture.componentInstance;
  });

  it('should display user name correctly', () => {
    component.user = { name: 'John Doe' };
    fixture.detectChanges();
    const compiled = fixture.nativeElement;
    expect(compiled.querySelector('h1').textContent).toBe('John Doe');
  });
});

এখানে:

  • TestBed: Angular অ্যাপ্লিকেশন টেস্ট করার জন্য ব্যবহার করা হয়।
  • fixture.detectChanges(): কম্পোনেন্টের পরিবর্তন বা ডেটা আপডেটের পরে টেস্ট চালানোর জন্য।

৪. Best Practices for Testing in MeanJS

  • Test-Driven Development (TDD): কোড লেখার আগে টেস্ট লিখুন।
  • Mocking Services: সার্ভিস বা ডিপেনডেন্সি মক করুন যাতে আপনি সঠিকভাবে ফাংশনালিটি টেস্ট করতে পারেন।
  • Isolate Tests: প্রতিটি টেস্ট কেসকে একে অপরের থেকে আলাদা এবং স্বাধীন রাখুন।
  • Continuous Integration (CI): টেস্টের ফলাফল সঠিকভাবে দেখতে CI tools যেমন Jenkins, Travis CI, বা CircleCI ব্যবহার করুন।

সারাংশ

Jasmine এবং Karma ব্যবহার করে MeanJS অ্যাপ্লিকেশনে টেস্টিং করা খুবই গুরুত্বপূর্ণ এবং এটি অ্যাপ্লিকেশনের কোডের মান নিশ্চিত করতে সাহায্য করে। Jasmine একটি শক্তিশালী টেস্ট ফ্রেমওয়ার্ক যা বেসিক ইউনিট টেস্টিং কভার করে, আর Karma হল একটি টেস্ট রানার যা আপনাকে টেস্ট ফলাফল দ্রুত দেখতে সাহায্য করে। AngularJS অ্যাপ্লিকেশনে Jasmine এবং Karma ইন্টিগ্রেশন ব্যবহার করে component tests, service tests, এবং directive tests করা সম্ভব। Proper testing ensures that your MeanJS application works as expected and is free from bugs.

Content added By
Promotion

Are you sure to start over?

Loading...