使用Mockito模拟Scala void函数

时间:2015-06-05 21:40:12

标签: scala mockito spec2

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

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

接口:

    void login(AuthenticationToken token) throws AuthenticationException;

我试过了:

   #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
      }

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

1 个答案:

答案 0 :(得分:6)

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