jmockit期望NPE

时间:2013-10-31 10:40:16

标签: java jmockit expectations

我有这段代码:

new Expectations(){
    {

    mFubar.getModel();
    result = new Model();
    times = 1;

    mFubar.getModel().getAllDogs();
    result = new HashSet<Dogs>();
    times = 1;
    }
};

不幸的是,我总是得到mFubar.getModel()的空值 如何为getModel()创建模拟值,以便mFubar.getModel().getAllDogs();正常工作?

1 个答案:

答案 0 :(得分:0)

你得到一个NPE,因为第二次调用mFubar.getModel()就像第一次一样,返回null。您不能在里面使用记录结果期望记录块;这些值只能从被测代码中获得。

此外,它看起来不像Model类在这里被模拟,因此尝试记录对getAllDogs()的调用也不起作用。为此,您需要声明@Mocked Model model模拟字段或模拟参数。

最后,具有集合(List,Set,Map等)作为其返回类型的模拟方法的默认返回值已经是空集合。因此,无论如何写result = new HashSet<Dog>();都是多余的。