将Mockito.when方法用于调用其他方法作为返回的方法



我试图测试我的类,但我的Mockito.when((似乎不起作用,我得到了一个"example"而不是"另一个example"。有什么想法吗?

public class ExampleClass {
public String create(String example){
return doSth();
}
public String doSth(){
return "example";
}
}
public class ExampleClassTest {
@Mock
ExampleClass exampleClassMock;
public void createTest(){
when(exampleClassMock.doSth()).thenReturn("another example");
assertEquals(exampleClassMock.create("x"), "another example");
}
}

首先,不要忘记将@Test注释放在测试方法上,将@RunWith(MockitoJUnitRunner.class)放在测试类上。

其次,如果你需要测试某个类的方法,并且在其中调用了同一类的另一个方法,你想模拟它,那么你需要使用@Spy:

@RunWith(MockitoJUnitRunner.class)
public class ExampleClassTest {
@Spy
ExampleClass exampleClassMock;
@Test
public void createTest() {
when(exampleClassMock.doSth()).thenReturn("another example");
assertEquals(exampleClassMock.create("x"), "another example");
}
}

有关间谍活动,请参阅文档。

最新更新