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
Matchersuntuk DSL. - Kesetaraan:
shouldBe,should equal; perbandingan denganbe >,+- 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.