2014-10-10 49 views
1

在specs2,我可以通過驗證方法的調用次數:如何驗證方法在specs2中被完全稱爲N次?

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

但如何檢查N次?這是我正在尋找的是這樣的:

there were times(n, user).getName 

不幸沒有這樣的API

回答

1

如果你看一下specs2綁定的的Mockito實施,你會發現像

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 
1

這是一個遺漏。我剛剛向API添加了exactly,現在發佈爲specs2-mock-2.4.7-SNAPSHOT(即將發佈正式版本):

val list2 = mock[java.util.List[String]] 
1 to 2 foreach { i => list.add("one") } 

there was exactly(2)(list).add("one") 
相關問題