Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Native Scala mocking framework
Scala Java

README.md

ScalaMock Build Status

Native Scala mocking.

Official website: http://scalamock.org/

Examples

Expectations-First Style

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
}

Record-then-Verify (Mockito) Style

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

Full worked example

Features

  • 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

Downloading

Download from Sonatype.

To use ScalaMock in sbt with ScalaTest add the following to your project file:

libraryDependencies +=
  "org.scalamock" %% "scalamock-scalatest-support" % "3.2.1" % "test"

and with Specs2:

libraryDependencies +=
  "org.scalamock" %% "scalamock-specs2-support" % "3.2.1" % "test"

Documentation

Future Plans

Check our roadmap.

Acknowledgements

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.

Something went wrong with that request. Please try again.