Mockito 不同范围的期望
我在 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
的出界单元格又如何呢?
有没有一种最简单、自然的方法来实现这种嘲笑?
I'm using Mockito as a part of Specs in scala code and I've stumbled upon the following task:
Given an ArrayBuffer that emulates a chess board (8x8 = 64 cells). If we querying ArrayBuffer
for cell that doesn't exist (has number more than 63 or less than 0) we should receive None
. Otherwise we returning Some(0)
(in almost all cases) or Some(1)
(just in few specified cells).
Right now I'm thinking about spies and something that starts like:
val spiedArray = spy(new ArrayBuffer[Int])
for (x <- 1 to 8; y <- 1 to 8) {
doReturn(Some(0)).when(spiedArray).apply(x * y-1)
}
And then explicitly respecify cells with Some(1).
But how about out-of-bound cells that should return None
?
Is there a simplest and natural way to achieve that mocking?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里的主要问题是规范是错误的:ArrayBuffer 无法按规范中的预期工作。因此,您必须:
The main issue here is that the specification is wrong: an
ArrayBuffer
cannot work as expected in the spec. Thus you must either:ArrayBuffer
for an homemade trait