0Pricing
Scala for Backend Engineering & Functional Programming · Pelajaran

Matcher

Assertion yang ekspresif.

Matcher adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. 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 Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa Itu Pencocok?

pencocok ScalaTest menyediakan sintaks yang ekspresif dan menyerupai bahasa Inggris untuk asersi. Alih-alih assert(x == 3), Anda menulis x shouldBe 3, sehingga pengujian mudah dibaca dan pesan kegagalan menjadi jelas.

Mencampurkan Pencocok

Campurkan sifat Matchers ke dalam spesifikasi Anda untuk mengaktifkan DSL. Sifat ini dapat digabungkan dengan gaya pengujian apa pun.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class DemoSpec extends AnyFlatSpec with Matchers {
  "A value" should "equal itself" in {
    val x = 3
    x shouldBe 3
  }
}

Pencocok Kesetaraan

Periksa kesetaraan dengan shouldBe atau should equal. Keduanya membandingkan dengan ==, tetapi dibaca secara alami.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class EqSpec extends AnyFlatSpec with Matchers {
  "sum" should "be correct" in {
    (2 + 2) shouldBe 4
    (2 + 2) should equal (4)
  }
}

Pencocok Perbandingan

Perbandingan numerik dibaca seperti prosa: should be >, should be <=, dan rentang dengan be within untuk toleransi bilangan titik mengambang.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class CmpSpec extends AnyFlatSpec with Matchers {
  "a number" should "compare" in {
    7 should be > 3
    7 should be <= 7
    2.0 shouldBe 2.0 +- 0.01
  }
}

Pencocok String

Pencocok untuk string mencakup startWith, endWith, include, dan regex dengan fullyMatch regex.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class StrSpec extends AnyFlatSpec with Matchers {
  "a string" should "match parts" in {
    "hello world" should startWith ("hello")
    "hello world" should include ("o w")
    "hello world" should endWith ("world")
  }
}

Pencocok Koleksi

Periksa koleksi dengan lancar: have size, contain, contain allOf, dan kekosongan dengan shouldBe empty.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class ColSpec extends AnyFlatSpec with Matchers {
  "a list" should "have expected contents" in {
    List(1, 2, 3) should have size 3
    List(1, 2, 3) should contain (2)
    List.empty[Int] shouldBe empty
  }
}

Pencocok Boolean dan Option

Cocokkan nilai kebenaran dan isi Option secara langsung: shouldBe true, shouldBe defined, dan should contain untuk nilai di dalamnya.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class OptSpec extends AnyFlatSpec with Matchers {
  "an option" should "be inspected" in {
    Some(5) shouldBe defined
    Some(5) should contain (5)
    None shouldBe empty
  }
}

Menggabungkan Pencocok

Gabungkan ekspektasi dengan and / or untuk asersi gabungan.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class CombineSpec extends AnyFlatSpec with Matchers {
  "a number" should "satisfy both" in {
    7 should (be > 0 and be < 10)
  }
}

Menguji Eksepsi

Gunakan an [Exception] should be thrownBy { ... } atau assertThrows untuk memverifikasi bahwa kode gagal sesuai harapan.

import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers

class ExSpec extends AnyFlatSpec with Matchers {
  "dividing by zero" should "throw" in {
    an [ArithmeticException] should be thrownBy (1 / 0)
  }
}

Mengapa Pencocok Membantu

Selain meningkatkan keterbacaan, pencocok menghasilkan pesan kegagalan yang deskriptif. Kegagalan List(1,2) should have size 3 melaporkan ukuran yang diharapkan dan ukuran sebenarnya, berbeda dari assert biasa yang hanya menyatakan bahwa boolean bernilai salah.

shouldBe vs should equal

Keduanya hampir identik; shouldBe lebih ringkas dan memberikan pesan yang sedikit lebih bersih untuk kesetaraan sederhana, sedangkan should equal mendukung instance Equality khusus untuk perbandingan tingkat lanjut.

Pemeriksaan Singkat

Uji pengetahuan Anda tentang pencocok.

Rangkuman

Anda telah mempelajari pencocok ScalaTest:

  • Campurkan Matchers untuk DSL.
  • Kesetaraan: shouldBe, should equal; perbandingan dengan be >, +- tolerance.
  • String: startWith, include; koleksi: have size, contain.
  • Eksepsi: should be thrownBy.
  • Pencocok memberikan kegagalan yang jelas dan deskriptif.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Matcher” gratis?

Ya — teks lengkap “Matcher” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Matcher”?

Assertion yang ekspresif. Kamu berlatih Scala for Backend Engineering & Functional Programming 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 Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming 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 2 dari 4.

Berapa lama pelajaran “Matcher” 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 Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming 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. Gaya ScalaTest
  2. Matcher
  3. Pengujian Berbasis Properti
  4. Mocking dan Fixture
← Kembali ke Scala for Backend Engineering & Functional Programming