首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何验证一个方法在specs2中被准确调用了N次?

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

Stack Overflow用户
提问于 2014-10-11 00:07:23
回答 2查看 2.3K关注 0票数 2

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

代码语言:javascript
运行
复制
there was one(user).getName
there were two(user).getName
there were three(user).getName

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

代码语言:javascript
运行
复制
there were times(n, user).getName

不幸的是,没有这样的API

EN

回答 2

Stack Overflow用户

发布于 2014-10-11 01:23:17

如果查看mockito的specs2绑定的实现,您会发现类似于

代码语言:javascript
运行
复制
def one[T <: AnyRef](mock: T)(implicit anOrder: Option[InOrder] = inOrder()): T =
  verify(mock, org.mockito.Mockito.times(1))(anOrder)

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

代码语言:javascript
运行
复制
def times[T <: AnyRef](n: Int, mock: T)(implicit anOrder: Option[InOrder] = inOrder()): T =
  verify(mock, org.mockito.Mockito.times(n))(anOrder)

或者干脆显式地使用mockito:

代码语言:javascript
运行
复制
val mocker = new MockitoMocker {}
verify(user, org.mockito.Mockito.times(42)).getName
票数 1
EN

Stack Overflow用户

发布于 2014-10-12 12:36:43

这是一个遗漏。我刚刚将exactly添加到API中,并将其发布为specs2-mock-2.4.7-SNAPSHOT (官方版本很快就会发布):

代码语言:javascript
运行
复制
val list2 = mock[java.util.List[String]]
1 to 2 foreach { i => list.add("one") }

there was exactly(2)(list).add("one")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26303624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档