scala - 如何验证一个方法在specs2中被准确地调用了N次?

标签 scala unit-testing specs2

在specs2中,我可以通过以下方式验证方法的调用时间:

there was one(user).getName
there were two(user).getName
there were three(user).getName

但是如何检查N次呢?我正在寻找的东西是这样的:

there were times(n, user).getName

不幸的是没有这样的API

最佳答案

如果您查看mockito的specs2绑定(bind)的实现,您会发现类似的内容

def one[T <: AnyRef](mock: T)(implicit anOrder: Option[InOrder] = inOrder()): T =
  verify(mock, org.mockito.Mockito.times(1))(anOrder)

所以我想你可以通过模仿那个方法来定义你自己的 times 方法:

def times[T <: AnyRef](n: Int, mock: T)(implicit anOrder: Option[InOrder] = inOrder()): T =
  verify(mock, org.mockito.Mockito.times(n))(anOrder)

或者直接显式使用mockito:

val mocker = new MockitoMocker {}
verify(user, org.mockito.Mockito.times(42)).getName

关于scala - 如何验证一个方法在specs2中被准确地调用了N次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26303624/

相关文章:

scala - Scala 中带有两个参数的类型构造函数的仿函数实例

scala - Akka HTTP编译错误

java - 使用 mockito 模拟链式方法调用?

scala - 模拟没有参数但带有隐式参数的方法

sbt - specs2-embedmongo 与 Scala 2.10.1 和 Play 2.1.1 的未解决依赖关系

scala - 无法使用 Action.async 测试 Controller

scala - 这些功能可以进一步推广吗?

scala - 列出 Slick 表格上的列

c# - 如何使用 TDD 测试没有 args 构造函数和 setter 的外观类?

scala - 在 FakeRequest 中使用 MultipartFormData 进行框架测试