我有这段代码:
new Expectations(){
{
mFubar.getModel();
result = new Model();
times = 1;
mFubar.getModel().getAllDogs();
result = new HashSet<Dogs>();
times = 1;
}
};
不幸的是,我总是得到mFubar.getModel()
的空值
如何为getModel()
创建模拟值,以便mFubar.getModel().getAllDogs();
正常工作?
答案 0 :(得分:0)
你得到一个NPE,因为第二次调用mFubar.getModel()
就像第一次一样,返回null
。您不能在里面使用记录结果期望记录块;这些值只能从被测代码中获得。
此外,它看起来不像Model
类在这里被模拟,因此尝试记录对getAllDogs()
的调用也不起作用。为此,您需要声明@Mocked Model model
模拟字段或模拟参数。
最后,具有集合(List,Set,Map等)作为其返回类型的模拟方法的默认返回值已经是空集合。因此,无论如何写result = new HashSet<Dog>();
都是多余的。