Native Scala mocking.
For the current status of ScalaMock, see this blog post.
This is ScalaMock 3, which supports Scala 2.10 only. For earlier versions of Scala, see ScalaMock 2.
def testTurtle {
val m = mock[Turtle] // Create mock Turtle object
(m.setPosition _).expects(10.0, 10.0) //
(m.forward _).expects(5.0) // Set expectations
(m.getPosition _).expects().returning(15.0, 10.0) //
drawLine(m, (10.0, 10.0), (15.0, 10.0)) // Exercise System Under Test
}
def testTurtle {
val m = stub[Turtle] // Create stub Turtle
(m.getPosition _).when().returns(15.0, 10.0) // Setup return values
drawLine(m, (10.0, 10.0), (15.0, 10.0)) // Exercise System Under Test
(m.setPosition _).verify(10.0, 10.0) // Verify expectations met
(m.forward _).verify(5.0) //
}
- Fully typesafe
- Full support for Scala features such as:
- Polymorphic (type parameterised) methods
- Operators (methods with symbolic names)
- Overloaded methods
- Type constraints
- ScalaTest and Specs2 integration
Download from Sonatype.
To use ScalaMock in sbt with ScalaTest add the following to your project file:
libraryDependencies +=
"org.scalamock" %% "scalamock-scalatest-support" % "3.0.1" % "test"
and with Specs2:
libraryDependencies +=
"org.scalamock" %% "scalamock-specs2-support" % "3.0.1" % "test"
When Scala supports macro types, this will enable:
-
Improved syntax:
mockObject.expects.method(arguments)
instead of:
(mockObject.method _) expects (arguments)
-
Mocking object creation (constructors)
-
Mocking singleton and companion objects (static methods)
-
Mocking final classes and classes with final methods or private constructors
YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.