0Pricing
jQuery Academy · Pelajaran

Menulis Pengujian jQuery yang Efektif

Berlatih menulis pengujian unit untuk manipulasi DOM, penangan peristiwa, dan panggilan AJAX, guna memastikan komponen jQuery Anda tangguh dan bebas bug.

Menulis Pengujian jQuery yang Efektif adalah pelajaran jQuery Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar jQuery Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus jQuery Academy mencakup 3 pelajaran total.

Menguasai Penulisan Pengujian jQuery

Selamat datang! Dalam pelajaran ini, kita akan mendalami penulisan pengujian unit yang efektif untuk aplikasi jQuery Anda. Kita akan berfokus pada strategi praktis untuk memverifikasi manipulasi DOM, penanganan peristiwa, dan panggilan AJAX asinkron.

Pengujian yang tangguh memastikan kode Anda bekerja sesuai harapan dan membantu mencegah regresi seiring berkembangnya proyek Anda.

Memverifikasi Perubahan DOM

Saat kode jQuery Anda mengubah Document Object Model (DOM), pengujian Anda harus memverifikasi perubahan tersebut. Ini mencakup pemeriksaan pembuatan elemen, penghapusan, perubahan atribut, atau pembaruan teks.

Biasanya, Anda memilih elemen setelah operasi selesai, lalu membuat pernyataan mengenai propertinya.

<!DOCTYPE html>
<html>
<head>
  <title>Test DOM Change</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
  <div id="app"></div>

  <script>
    $(document).ready(function() {
      // Simulate a jQuery operation
      $('#app').append('<p class="message">Hello world!</p>');

      // Simulate a test assertion
      if ($('#app .message').length === 1 && $('#app .message').text() === 'Hello world!') {
        console.log("PASS: Element appended and text is correct.");
      } else {
        console.log("FAIL: Element not found or text is incorrect.");
      }
    });
  </script>
</body>
</html>

Mengisolasi Pengujian DOM

Untuk mendapatkan pengujian DOM yang andal, sangat penting memastikan setiap pengujian berjalan dalam lingkungan yang bersih dan terisolasi. Sebagian besar kerangka kerja pengujian menyediakan kait beforeEach dan afterEach.

  • beforeEach: Menyiapkan keadaan DOM awal untuk pengujian baru.
  • afterEach: Membersihkan perubahan DOM yang dibuat oleh pengujian.

Hal ini mencegah pengujian saling mengganggu.

Menguji Perubahan Class

Mari kita uji manipulasi DOM yang umum: menambahkan atau menghapus class CSS. Anda dapat membuat pernyataan untuk memeriksa apakah suatu elemen .hasClass() memiliki class tertentu setelah fungsi jQuery Anda dijalankan.

<!DOCTYPE html>
<html>
<head>
  <title>Test Class Toggle</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
  <button id="toggleBtn" class="active">Toggle</button>

  <script>
    $(document).ready(function() {
      // Function to test
      function toggleActiveClass(element) {
        $(element).toggleClass('active');
      }

      // Test Case 1: Active class is present initially
      if ($('#toggleBtn').hasClass('active')) {
        console.log("PASS: Initial state has 'active' class.");
      } else {
        console.log("FAIL: Initial state missing 'active' class.");
      }

      // Run the function
      toggleActiveClass('#toggleBtn');

      // Test Case 2: Active class should be removed
      if (!$('#toggleBtn').hasClass('active')) {
        console.log("PASS: 'active' class removed after toggle.");
      } else {
        console.log("FAIL: 'active' class not removed.");
      }
    });
  </script>
</body>
</html>

Menyimulasikan Peristiwa Pengguna

Untuk menguji penangan peristiwa, Anda perlu menyimulasikan interaksi pengguna. Metode .trigger() milik jQuery sangat cocok untuk keperluan ini. Metode tersebut dapat memicu peristiwa apa pun (seperti 'click', 'submit', atau 'change') pada elemen yang dipilih.

Setelah memicu peristiwa, Anda membuat pernyataan mengenai hasil yang diharapkan, seperti perubahan DOM atau pemanggilan fungsi.

Memverifikasi Peristiwa Klik

Berikut cara menguji apakah peristiwa klik memperbarui bagian antarmuka pengguna dengan benar. Kita akan memicu klik, lalu memeriksa isi teks baru pada elemen tersebut.

<!DOCTYPE html>
<html>
<head>
  <title>Test Click Event</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
  <button id="myButton">Click Me</button>
  <p id="status">Not clicked yet.</p>

  <script>
    $(document).ready(function() {
      // Attach the event handler
      $('#myButton').on('click', function() {
        $('#status').text('Button was clicked!');
      });

      // Simulate the click event
      $('#myButton').trigger('click');

      // Simulate assertion
      if ($('#status').text() === 'Button was clicked!') {
        console.log("PASS: Status updated after click.");
      } else {
        console.log("FAIL: Status not updated correctly.");
      }
    });
  </script>
</body>
</html>

Pernyataan untuk Keadaan Peristiwa

Penangan peristiwa sering melakukan lebih dari sekadar mengubah DOM; penangan tersebut mungkin memperbarui atribut data atau keadaan internal aplikasi. Pengujian Anda juga harus memverifikasi perubahan yang kurang terlihat ini.

Anda dapat memeriksa nilai .data() atau properti lainnya setelah suatu peristiwa terjadi.

<!DOCTYPE html>
<html>
<head>
  <title>Test Event Data</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
  <button id="counterBtn" data-count="0">Increase Count</button>

  <script>
    $(document).ready(function() {
      // Attach event handler
      $('#counterBtn').on('click', function() {
        let currentCount = parseInt($(this).data('count'));
        $(this).data('count', currentCount + 1);
      });

      // Initial check
      if ($('#counterBtn').data('count') === 0) {
        console.log("PASS: Initial count is 0.");
      } else {
        console.log("FAIL: Initial count is not 0.");
      }

      // Trigger click
      $('#counterBtn').trigger('click');

      // Assert after first click
      if ($('#counterBtn').data('count') === 1) {
        console.log("PASS: Count is 1 after first click.");
      } else {
        console.log("FAIL: Count is not 1.");
      }

      // Trigger another click
      $('#counterBtn').trigger('click');

      // Assert after second click
      if ($('#counterBtn').data('count') === 2) {
        console.log("PASS: Count is 2 after second click.");
      } else {
        console.log("FAIL: Count is not 2.");
      }
    });
  </script>
</body>
</html>

Menguji AJAX Asinkron

Menguji panggilan AJAX nyata dapat berlangsung lambat, tidak andal, dan bergantung pada layanan eksternal. Solusinya adalah menggunakan simulasi untuk permintaan AJAX Anda.

Simulasi berarti mengganti panggilan jaringan sebenarnya dengan respons yang terkendali dan telah ditentukan. Dengan demikian, pengujian dapat berjalan cepat dan konsisten, serta hanya berfokus pada logika sisi klien Anda.

Menerapkan Simulasi AJAX

Anda dapat menggunakan alat seperti Sinon.js atau, untuk kasus sederhana, mengganti perilaku AJAX jQuery. Salah satu cara dasar untuk menyimulasikan respons AJAX yang berhasil dalam pengujian adalah memodifikasi $.ajax sementara atau menggunakan pustaka simulasi.

Di sini, kita akan menyimulasikan panggilan balik keberhasilan tanpa permintaan jaringan nyata.

<!DOCTYPE html>
<html>
<head>
  <title>Mock AJAX Test</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
  <div id="data-display">Loading...</div>

  <script>
    $(document).ready(function() {
      // Store original $.ajax for restoration
      const originalAjax = $.ajax;

      // Mock $.ajax for this test
      $.ajax = function(options) {
        // Simulate a successful response
        const deferred = $.Deferred();
        deferred.resolve({ message: "Mocked data received!" });
        return deferred.promise();
      };

      // Your function that makes an AJAX call
      function fetchDataAndDisplay() {
        $.ajax({
          url: '/api/data',
          method: 'GET'
        }).done(function(response) {
          $('#data-display').text(response.message);
        }).fail(function() {
          $('#data-display').text('Error fetching data.');
        });
      }

      // Run the function under test
      fetchDataAndDisplay();

      // Simulate assertion after a short delay (for async effect)
      setTimeout(function() {
        if ($('#data-display').text() === 'Mocked data received!') {
          console.log("PASS: AJAX call successfully mocked and handled.");
        } else {
          console.log("FAIL: AJAX mock failed or handler incorrect.");
        }
        // Restore original $.ajax (important for real apps)
        $.ajax = originalAjax;
      }, 10); // Small delay to allow promise resolution
    });
  </script>
</body>
</html>

Pemeriksaan Singkat

Anda telah mempelajari pengujian manipulasi DOM, peristiwa, dan AJAX. Metode jQuery manakah yang biasanya digunakan untuk memicu peristiwa secara terprogram pada elemen dalam suatu pengujian?

Ringkasan: Pengujian jQuery yang Efektif

Selamat! Anda telah mempelajari cara menulis pengujian unit yang efektif untuk berbagai aspek aplikasi jQuery Anda.

  • Kita membahas pembuatan pernyataan untuk perubahan pada DOM, serta memverifikasi properti dan isi elemen.
  • Kita mempelajari cara menyimulasikan interaksi pengguna dan menguji penangan peristiwa menggunakan .trigger().
  • Terakhir, kita membahas simulasi permintaan AJAX untuk memastikan pengujian operasi asinkron berlangsung cepat dan andal.

Teknik-teknik ini sangat penting untuk membangun kode jQuery yang tangguh dan mudah dipelihara.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menulis Pengujian jQuery yang Efektif” gratis?

Ya — teks lengkap “Menulis Pengujian jQuery yang Efektif” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus jQuery Academy, upgrade ke CoddyKit PRO. Kursus jQuery Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Menulis Pengujian jQuery yang Efektif”?

Berlatih menulis pengujian unit untuk manipulasi DOM, penangan peristiwa, dan panggilan AJAX, guna memastikan komponen jQuery Anda tangguh dan bebas bug. Kamu berlatih jQuery Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai jQuery Academy?

Tidak diperlukan pengalaman sebelumnya. jQuery Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Menulis Pengujian jQuery yang Efektif” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran jQuery Academy ini?

Ya. Setiap pelajaran jQuery Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pengenalan Pengujian Unit jQuery
  2. Menyiapkan Lingkungan Pengujian
  3. Menulis Pengujian jQuery yang Efektif
← Kembali ke jQuery Academy