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
Matchersfür die DSL ein. - Gleichheit:
shouldBe,should equal; Vergleiche mitbe >,+- 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.