我正在尝试模拟列表
counted[binModel.getX() - 1][binModel.getY() - 1].add(activeModel);
add
是一个boolean
,我正在尝试这个
Mockito.when(testee.getCounted()[binModel.getSelectionX() - 1]
[binModel.getSelectionY() - 1].add(activeModel)).thenReturn(Mockito.anyBoolean());
这会引发错误
public List<CountModel>[][] getCounted() {
return counted.clone();
}
counted
在原始类中声明为
private List<CountModel>[][] counted;
这是错误:
空指针和@mock私有列表[][]计数;莫基托不能模拟/监视以下内容: - 期末课程 - 匿名类 - 基元类型
数组
是Java中的最后一个类,所以不能被嘲笑。
您可能要做的是自己用模拟填充数组,例如......
// Lose the @Mock annotation if that's how you set it up
private List<CountModel>[][] counted;
@Before
@SuppressWarnings("unchecked")
public void setup() {
counted = new List[X_SIZE][Y_SIZE];
for(int x = 0; x < X_SIZE; x++) {
for(int y = 0; y < Y_SIZE; y++) {
counted[x][y] = mock(List.class);
}
}
}
(不知道为什么你真的想模拟一个列表)
为了绕过"克隆"的事情,您可以构建另一个模拟来表示克隆列表,或者只返回相同的列表......
@Before
@SuppressWarnings("unchecked")
public void setup() {
counted = new List[X_SIZE][Y_SIZE];
for(int x = 0; x < X_SIZE; x++) {
for(int y = 0; y < Y_SIZE; y++) {
counted[x][y] = mock(List.class);
when(counted[x][y].clone()).thenReturn(counted[x][y]);
}
}
}
就像我说的,模拟可能不是模拟列表的最佳用途。也许创建一个包含模拟"计数模型"或其他内容的真实列表?
(您可能需要发布完整的代码,以便让我更多地了解您要做什么)