You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在specs2的eventually中使用Mockito的verify方法?

解决specs2异步验证中无需添加success的方法

问题根源

specs2的eventually方法要求传入的代码块返回org.specs2.execute.Result类型,但原生Mockito的verify(barMock).bar()返回的是Unit,类型不兼容,所以必须通过success来补全符合要求的返回值。

无需success的解决方案

利用specs2与Mockito集成的DSL,使用specs2风格的验证语句——这类语句本身就会返回Result类型,可直接放入eventually中,完全不需要额外添加success:

import org.specs2.mutable.Specification
import org.specs2.mock.Mockito

class AsyncFunctionSpec extends Specification with Mockito {
  "Async function foo" should {
    "invoke barMock.bar()" in {
      val barMock = mock[Bar]
      foo() // 执行异步函数

      eventually {
        there was one(barMock).bar() // 直接写验证逻辑,无需success
      }
    }
  }
}

原生Mockito的替代写法(仍需返回Result,但更简洁)

如果坚持用原生Mockito的verify语法,也可以用更简洁的ok替代success,本质都是返回一个成功的Result实例:

eventually {
  verify(barMock).bar()
  ok
}

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:30:57