6

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

试图模拟返回 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。我的目标是围绕登录方法进行测试,并测试一些成功案例以及该方法引发异常的一些失败案例。

4

1 回答 1

9

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

于 2015-06-07T00:33:36.493 回答