Writing a Small DSL

In this section, we'll reimplement some FlatSpec ScalaTest DSLs in order to see how to implement DSLs in Scala.

First, we'll have a look at a simple way to model test cases in Scala using case classes. Then, we'll have a look at how to create a little DSL for creating those test cases.

Modeling Test Cases

Before we can create a DSL, we need to have something to create a DSL for. In our case, we want to create a DSL for specifying tests, so let's have a look at how we could model tests using case classes in Scala:

sealed trait TestResult
case class TestFailure(message: String) extends TestResult
case object TestSuccess extends TestResult

We'll create an algebraic data type that represents the result of running a test case. The ...

Get Professional Scala now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.