2011-08-23 46 views
0

我使用Mockito作爲規格的一部分在scala代碼中,我偶然發現了以下任務:
給定一個模擬棋盤(8x8 = 64單元格)的ArrayBuffer。如果我們查詢ArrayBuffer不存在的單元格(數目大於63或小於0),我們應該收到None。否則,我們返回Some(0)(幾乎所有情況下)或Some(1)(僅在幾個指定的單元格中)。Mockito不同範圍的期望

現在我考慮過這個問題開始像間諜和東西:

val spiedArray = spy(new ArrayBuffer[Int]) 
    for (x <- 1 to 8; y <- 1 to 8) { 
    doReturn(Some(0)).when(spiedArray).apply(x * y-1) 
    } 

然後明確respecify一些細胞(1)。
但是應該返回None的出界單元怎麼樣?

是否有一種最簡單和最自然的方式來實現這種嘲諷?

+1

我覺得你應該去從0到7,而不是1〜8)...否則我在這裏不真的看到嘲笑和填充ArrayBuffer的好處嗎? ...如果你創建了一個接口,可能會更有意義 –

回答

1

這裏的主要問題是規範是錯誤的:在規範中ArrayBuffer無法按預期工作。因此,你必須:

  • 改變預期的行爲
  • 變化ArrayBuffer一個自制的特質
+0

是的,嘲笑的概念被誤解了。 –