Mocking Scala void function using Mockito

6.5k views Asked by At

I found a few answers for this but nothing is working for me.

Trying to mock Apache Shiro Subject interface login method which returns void.

Interface:

    void login(AuthenticationToken token) throws AuthenticationException;

I have tried :

   #1
  val subject = mock[Subject]
  doNothing().when(subject).login(new UsernamePasswordToken())

   #2
  val subject = mock[Subject]
  doNothing().when(subject).login(any[UsernamePasswordToken])

   #3
  when(subject.login(any[UsernamePasswordToken])).thenAnswer(new Answer[Void]() {
      override def answer(invocation: InvocationOnMock): Void = {
       null:Void
      }

I keep getting NullPointerException on login. My goal is test around the login method and test some success cases along with some failure cases where this method throws an exception.

1

There are 1 answers

0
marios On BEST ANSWER

The default behavior in Mockito is to return nothing if you don't "stub" a particular method. No need to force a void() function to doNothing() since it's doing nothing by default.