Skip to content

Instantly share code, notes, and snippets.

@igstan
Created August 1, 2012 11:31
Show Gist options
  • Save igstan/3225999 to your computer and use it in GitHub Desktop.
Save igstan/3225999 to your computer and use it in GitHub Desktop.
Partial verification of arguments passed to a mocked method in specs2.
import org.specs2.mock.Mockito
import org.specs2.mutable.Specification
import org.specs2.specification.Scope
class LearningSpecs2 extends Specification {
trait Logger {
def error(a: String, e: Throwable)
}
trait mocks extends Mockito with Scope {
val mockedLogger = mock[Logger]
}
"mocking" should {
"be able to verify arguments passed to mocks" in new mocks {
val exception = new RuntimeException
mockedLogger.error("message", exception)
got {
one(mockedLogger).error("message", exception)
}
}
// Fails with the following stack trace:
//
// [error] ! Fragment evaluation error
// [error] ThrowableException: org/hamcrest/TypeSafeMatcher (FutureTask.java:138)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.argThat(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply$mcV$sp(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.got(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.<init>(LearningSpecs2.scala:46)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.argThat(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply$mcV$sp(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.got(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.<init>(LearningSpecs2.scala:46)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] org/hamcrest/TypeSafeMatcher
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.argThat(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply$mcV$sp(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.got(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.<init>(LearningSpecs2.scala:46)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] org.hamcrest.TypeSafeMatcher
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.argThat(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply$mcV$sp(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2$$anonfun$2.apply(LearningSpecs2.scala:47)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.got(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13$$anon$2.<init>(LearningSpecs2.scala:46)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
// [error] ro.igstan.learning.LearningSpecs2$$anonfun$5$$anonfun$apply$13.apply(LearningSpecs2.scala:43)
"be able to *partially* verify arguments passed to mocks" in new mocks {
val exception = new RuntimeException
mockedLogger.error("message", exception)
got {
one(mockedLogger).error(any[String], ===(exception))
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment