使用Mockito模拟Scala void函数

Bar*_*rry 6 scala mockito spec2

我找到了一些答案,但没有什么对我有用.

试图模拟返回void的Apache Shiro Subject接口登录方法.

接口:

    void login(AuthenticationToken token) throws AuthenticationException;
Run Code Online (Sandbox Code Playgroud)

我试过了 :

   #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
      }
Run Code Online (Sandbox Code Playgroud)

我在登录时不断收到NullPointerException.我的目标是测试登录方法并测试一些成功案例以及此方法抛出异常的一些失败案例.

mar*_*ios 8

Mockito中的默认行为是,如果您没有"存根"特定方法,则不返回任何内容.无需强制执行void()函数,doNothing()因为它默认情况下不执行任何操作.