我有一段代码:
new Expectations(){
{
mFubar.getModel();
result = new Model();
times = 1;
mFubar.getModel().getAllDogs();
result = new HashSet<Dogs>();
times = 1;
}
};不幸的是,对于mFubar.getModel(),我总是得到一个空值。
如何为getModel()创建一个模拟值以使mFubar.getModel().getAllDogs();正确工作?
发布于 2013-10-31 14:57:17
您将得到一个NPE,因为对mFubar.getModel()的第二个调用,就像第一个调用一样,返回null。您不能在期望记录块中使用记录的结果;这些值只能从测试代码中获得。
此外,这里似乎没有对Model类进行模拟,所以尝试记录对getAllDogs()的调用也是行不通的。为此,您需要声明一个@Mocked Model model模拟字段或模拟参数。
最后,具有集合(List、Set、Map等)的模拟方法的默认返回值。因为它的返回类型已经是一个空集合。因此,编写result = new HashSet<Dog>();无论如何都是多余的。
https://stackoverflow.com/questions/19704270
复制相似问题