【问题标题】:Mocking Scala void function using Mockito使用 Mockito 模拟 Scala void 函数
【发布时间】:2015-06-05 21:40:12
【问题描述】:

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

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

【问题讨论】:

  • Mockito 的默认行为是,如果您不“存根”特定方法,则不返回任何内容。也就是说,您是否尝试过删除整个 `doDonthing()..." 行?
  • 是的,所以我确实读过类似的内容,但将该行作为 mock(subject) 给了我 NPE
  • 将 () 视为 [] 在我的手机上输入
  • 你能把它复制到一个简短的项目中吗?我很确定 Mockito 默认情况下会存根所有方法。它不应该引发 NPE。
  • 会做也会回去,我可以从被测方法和测试异常中发布更多代码,也许我读错了

标签: scala mockito spec2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多