使用Mockito模拟Scala void函数



我找到了一些答案,但没有一个适合我。

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

接口:

    void login(AuthenticationToken token) throws AuthenticationException;

I have try:

   #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。我的目标是围绕登录方法进行测试,并测试一些成功案例以及该方法抛出异常的一些失败案例。

Mockito的默认行为是,如果您不"存根"特定方法,则不返回任何内容。不需要强制doNothing()使用void()函数,因为默认情况下它什么都不做。

最新更新