نمایش نتایج 1 تا 2 از 2

نام تاپیک: تست کد، توابع، فریمورک های جاوا اسکریپت

  1. #1
    کاربر دائمی آواتار forodo
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    شهر جدید پردیس
    پست
    1,468

    تست کد، توابع، فریمورک های جاوا اسکریپت

    سلام
    خسته نباشید دوستان
    من تا اونجایی که می دونم میشه توابع جاوا اسکریپت رو تست کرد.
    خیلی توی اینترنت نگشتم.
    ولی یه چرخی زدم و فهمیدم که تسترهایی مثل Mocha و Jasmine رو داریم.
    Chai و Sinon هم انگار هست.
    می خواستم بدونم دقیقاً کار اینا چیه؟
    Mocha و Jasmine و Chai و Sinon چه فرقی با هم دارند و کلاً اینجور تستا برای چیه؟
    و
    داکیومنتی که خوب توضیح داده باشه و یا اگر فیلم آموزش باشه معرفی کنید ممنون میشه.
    اگر فارسی باشه که خیلی بهتره. الفباش رو یاد بگیریم بعد بریم برای انگلیسی.
    باتشکر

  2. #2

    نقل قول: تست کد، توابع، فریمورک های جاوا اسکریپت

    با mocha خیلی کم کار کردم ولی با jasmine زیاد و هدف از وجود این فریم ورک ها همین طور که خودتون گفتید تست یه شی یا تابع یه به طور کلی هر قطعه ی کدی که نوشته اید هست برای این منظور می توانید عناوینی مثل test driven development و یا behavior driven development رو سرچ کنید که هر دو مفهومی نزدیک به هم دارند به عنوان مثال TDD منظور از این هست که قیل از نوشتن یه تایع به عنوان مثال اول تست مربوط به اون تابع رو بنویسید و سپس تست رو اجرا کنید و مشاهد کنید که تست fail میشود و سپس شروع به نوشتن خود تابع کنید که به طور خلاصه با مراحل زیر :
    1- write tests for new feature
    2- see tests fails
    3- (write actual code (make tests pass
    4- improve your code
    5- goto step 1
    به عنوان مثال در jasmine برای تست یه تابع که چند عدد رو میگیره و میانگین اعداد رو میده به صورت زیر ابتدا تست رو مینویسیم :



    //avg.spec.js
    //in BDD style


    describe('avg Function',function(){


    it('should take at least one paramter(Number) or throw an error',function


    (){
    expect(function(){avg('str');}).toThrow();
    expect(function(){avg();}).toThrow();
    });


    it('should return average of given numbers',function(){

    expect(avg(2,2)).toBe(2);
    expect(avg(1,2,3)).toBe(2);
    expect(avg('1','2')).toBe(1.5);
    // more tests goes here
    });


    });



    اکنون source :


    //avg.js
    function avg(){
    var args = Array.prototype.slice.call(arguments),
    err = function(msg){throw new Error(msg);};
    return /^\d+$/g.test(args.join('')) ? (args.reduce(function(a,b){return parseInt(a)+parseInt(b);},0)/args.length) :err


    ('give this function number ');
    }

    و این کار (نوشتن test) قبل از نوشتن سورس اصلی مزایای زیادی داره که مهم ترین باعث میشه که ویژگی های کلاس و یا تابعی که مینویسی قبل از نوشتن فکر کنی و اون ها رو مورد تست قرار بدی و هم چنین از نظر من بهترین ویژگی زمانیه که بعد از دو ماه میخواهی یک feature جدید به اپت اضافه کنی که با اضافه کردنش کد هات به هم میریزه و درست کار نمیکنه میتونی تست ها رو اجرا کنی و ببینی که کدوم ناحیه به مشکل بر خورده و اون رو اصلاح کنی و خیلی فایده های دیگه که میتونی تو documentation خود jasmine به دنبال چرایی استفاده از فریم ورکی مثل jasmine باشی ...
    http://jasmine.github.io

    موفق باشید ...
    آخرین ویرایش به وسیله SCoder : چهارشنبه 30 تیر 1395 در 14:22 عصر

تاپیک های مشابه

  1. مخفی کردن فایل و کد های جاوا اسکریپت
    نوشته شده توسط terrorhell در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: جمعه 06 شهریور 1388, 18:51 عصر
  2. Toolkit های جاوا اسکریپت ؟
    نوشته شده توسط multiTech در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: یک شنبه 01 دی 1387, 13:33 عصر
  3. بازی های جاوا اسکريپت
    نوشته شده توسط hamid67fathi در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: یک شنبه 31 شهریور 1387, 19:49 عصر
  4. سوال: جلوگیری از اجرای کد های جاوا اسکریپت بر روی بعضی از مطالب وبلاگ
    نوشته شده توسط amirhnp در بخش طراحی وب (Web Design)
    پاسخ: 5
    آخرین پست: یک شنبه 20 مرداد 1387, 21:27 عصر
  5. اجرا نشدن کد های جاوا اسکریپت در masterpage
    نوشته شده توسط abadanboy در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: پنج شنبه 26 مهر 1386, 11:10 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •