我正在使用Mockito的when
和thenReturn
函数,我想知道是否有一种方法可以在测试函数中初始化对象内部。例如,如果我有:
public class fooTest {
private Plane plane;
private Car car;
@Before
public void setUp() throws Exception {
Mockito.when(Car.findById(eq(plane.getId()))).thenReturn(plane);
}
@Test
public void isBlue() {
plane = new Plane();
plane.setId(2);
Plane result = Car.findById(car);
assertEquals(Color.BLUE, result.getColor());
}
}
显然上面的代码不起作用,因为它抛出一个空指针异常,但想法是在每个测试函数中初始化平面对象,并让mockito when
使用 对象。我想我可以在Plane对象初始化和设置之后将when
行放在每个函数中,但这会使代码看起来非常难看。有没有更简单的方法呢?
答案 0 :(得分:1)
由于我不知道您的Plane
或Car
课程,我将在test
课程中做出一些假设。
我不知道你要测试的是什么,如果你正在尝试test
Car
,理想情况下mock
你的课程不应该test
。
您可以通过setUp
方法以任何方式执行此类操作。
public class fooTest {
private Plane plane;
@Mock
private Car car;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
plane = new Plane();
plane.setId(2);
plane.setColor(Color.BLUE);
Mockito.when(car.findById(eq(plane.getId()))).thenReturn(plane);
}
@Test
public void isBlue() {
// There is no point in testing car since the result is already mocked.
Plane result = car.findById(2);
assertEquals(Color.BLUE, result.getColor());
}
}