在多个级别中存根

时间:2014-01-22 12:43:59

标签: java mockito

我正在使用mockito进行存根。

这是我的设置的最小代表。假设getter和setter已经到位

class Person {
   String name;
}

class Car {
   Person owner;
}

class CarPool {
   Car car;

   String getOwner() {
      car.getOwner.getName()
   }
}

class testClass {
  CarPool carPool = new CarPool();

  Car car = mock(Car.class);
  when(car.getOwner.getName()).thenReturn("name");

  carPool.setCar(car);

  assertEquals(carPool.getOwner, "name");
}

我在尝试此操作时得到一个nullpointer,因为getOwner并非全部存根。有可能像这样做一个茬吗?如果没有,在这种情况下最好的解决方案是什么?

1 个答案:

答案 0 :(得分:2)

你可以做深度剔除。

Car car = mock(Car.class, Mockito.RETURNS_DEEP_STUBS);

请注意,深层存根通常意味着代码不干净。请考虑文档中的以下引用:

  

每当一个模拟器返回模拟器时,一个仙女就会死亡。

来源:Mockito documentation