ArgumentCaptor
facility from inside a Specs2 example:
I'm just going to nab my own answer from the relevant SO question:
class ApplicationSpec extends Specification with Mockito { val mockedNewsRenderer = mock[List[String] => Html] val controller = new ApplicationController { override def renderNews(s:List[String]) = mockedNewsRenderer(s) } "Application News Controller" should { "Pass a non-empty list of news items to the template" in { val result = controller.newsAction(FakeRequest()) status(result) must beEqualTo(200) val captor = ArgumentCaptor.forClass(classOf[List[String]]) there was one(mockedNewsRenderer).apply(captor.capture()) val theArgument = captor.getValue theArgument.isEmpty must beFalse } } }The trickiest bit (if you're already familiar with
ArgumentCaptor
usage in Java) is the use of classOf[T]
to get the Scala equivalent of Java's .class
so you can then call ArgumentCaptor.forClass()
.
There's probably scope there for a Pimp My Library tweak to tidy up that particular line - I'm thinking I'd like to just be able to say:
val captor = ArgumentCaptor.for[List[String]]
Stay tuned ...
No comments:
Post a Comment
Comments welcome - spam is not. Spam will be detected, deleted and the source IP blocked.