Suppose your team has decided to use Scala for a performance-critical component in your backend system that will need to scale to millions of concurrent users. A couple of days into the project you are finding that in Scala, there are few easy wins, and as the codebase grows, your confidence in it shrinks. You are comfortable with ATDD, TDD and emergent architecture in the development ecosystems of .NET and Java, but are unsure of the best way to introduce those disciplines to your team along with the conventions of Scala.
Together, we will explore the various testing DSLs available in Scala for elegantly specifying your intent and cultivating your design through tests. We will examine which frameworks to use for testing interactions with an existing Actor-based library, and how to drive the development with tests for a system that relies on reactive programming.
We will start with an empty programming canvas, and by the end of this session, attendees will have been immersed in the process of writing a fully-functional Dropbox client that incorporates the ScalaTest, Scalaz, Akka and Spray libraries.
The techniques are taught in the context of Scala but can be applied to other Actor-based frameworks in functional languages like Erlang or Haskell.