0Pricing
Scala for Backend Engineering & Functional Programming · Lektion

Matcher

Ausdrucksstarke Assertions

Matcher ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was sind Matcher?

ScalaTest-Matcher bieten eine ausdrucksstarke, an natürliches Englisch angelehnte Syntax für Assertions. Statt assert(x == 3) schreiben Sie x shouldBe 3. Dadurch werden Tests lesbar und Fehlermeldungen verständlich.

Matcher einbinden

Binden Sie das Trait Matchers in Ihre Spezifikation ein, um die DSL zu aktivieren. Es lässt sich mit jedem Teststil kombinieren.

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
  }
}

Gleichheits-Matcher

Prüfen Sie Gleichheit mit shouldBe oder should equal. Beide vergleichen mit ==, lesen sich aber natürlich.

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)
  }
}

Vergleichs-Matcher

Numerische Vergleiche lesen sich wie Prosa: should be >, should be <= und Bereiche mit be within für die Toleranz bei Gleitkommazahlen.

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
  }
}

String-Matcher

Zu den Matchern für Strings gehören startWith, endWith, include sowie reguläre Ausdrücke mit 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")
  }
}

Collection-Matcher

Untersuchen Sie Collections flüssig mit have size, contain, contain allOf sowie mit shouldBe empty, um Leere zu prüfen.

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
  }
}

Matcher für Boolean und Option

Prüfen Sie Wahrheitswerte und Inhalte von Option direkt: mit shouldBe true, shouldBe defined und should contain für den enthaltenen Wert.

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
  }
}

Matcher kombinieren

Kombinieren Sie Erwartungen mit and/or zu zusammengesetzten Assertions.

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)
  }
}

Auf Exceptions testen

Verwenden Sie an [Exception] should be thrownBy { ... } oder assertThrows, um zu prüfen, dass Code wie erwartet fehlschlägt.

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)
  }
}

Warum Matcher hilfreich sind

Neben der besseren Lesbarkeit erzeugen Matcher beschreibende Fehlermeldungen. Ein fehlgeschlagenes List(1,2) should have size 3 meldet die erwartete und die tatsächliche Größe. Ein einfaches assert sagt dagegen nur, dass der Boolean-Wert falsch war.

shouldBe vs should equal

Die beiden Varianten sind nahezu identisch. shouldBe ist kürzer und liefert bei einfacher Gleichheit etwas übersichtlichere Meldungen, während should equal benutzerdefinierte Equality-Instanzen für fortgeschrittene Vergleiche unterstützt.

Kurzer Test

Testen Sie Ihr Wissen über Matcher.

Zusammenfassung

Sie haben ScalaTest-Matcher gelernt:

  • Binden Sie Matchers für die DSL ein.
  • Gleichheit: shouldBe, should equal; Vergleiche mit be >, +- tolerance.
  • Strings: startWith, include; Collections: have size, contain.
  • Exceptions: should be thrownBy.
  • Matcher liefern klare, aussagekräftige Fehlermeldungen.

Häufig gestellte Fragen

Ist die Lektion „Matcher“ kostenlos?

Ja — der vollständige Text von „Matcher“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Matcher“?

Ausdrucksstarke Assertions Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?

Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Matcher“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?

Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. ScalaTest-Stile
  2. Matcher
  3. Property-Based Testing
  4. Mocking und Fixtures
← Zurück zu Scala for Backend Engineering & Functional Programming