0

我在scala代码中使用Mockito作为Specs的一部分,我偶然发现了以下任务:
给定一个模拟棋盘的ArrayBuffer(8x8 = 64个单元格)。如果我们查询ArrayBuffer不存在的单元格(编号大于 63 或小于 0),我们应该收到None. 否则我们返回Some(0)(在几乎所有情况下)或Some(1)(仅在几个指定的单元格中)。

现在我正在考虑间谍和一些类似的东西:

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

然后用 Some(1) 明确地重新指定单元格。
但是应该返回的越界单元格None呢?

有没有一种最简单自然的方法来实现这种模拟?

4

1 回答 1

1

这里的主要问题是规范是错误的:ArrayBuffer不能按规范中的预期工作。因此,您必须:

  • 改变预期的行为
  • 改变ArrayBuffer自制特性
于 2011-08-23T14:08:45.517 回答