我试图使用Mockito从testClass中运行class1中的方法(try()时,class3中的方法3()的返回值。我有限制无法为我拥有的代码制作任何版本。因此,我无法按照我在互联网上看到的一些解决方案来添加构造函数来制作模拟。我正在使用WebApplicationContextSetup使用MockMVC。如果可以使用Mockito模拟Method3()的值,请指导我,如果不可能,我可以用来模拟该值的其他解决方案?
class1
{
Class2 c2 = new Class2();
public String try()
{
Something temp1 = c2.method1();
}
}
class2
{
Class3 c3 = new Class3();
public String method1()
{
return c3.method3();
}
}
class3
{
//Will like to mock the return value of this method
public String method3()
{
return "asd";
}
}
testclass
{
class1 c1 = new class1();
c1.try();
}
谢谢:D
关于您的代码,看起来您需要模拟静态方法:
return Class3.method3();
或不
public String method3()
请精确,因为答案会有所不同,具体取决于您是否需要模拟静态方法。
为此,您需要监视您的class2。
import org.junit.Before;
import org.junit.Test;
import org.mockito.*;
import static org.junit.Assert.assertEquals;
public class TestClass {
@InjectMocks
private Class1 class1 = new Class1();
@InjectMocks @Spy
private Class2 class2 = new Class2();
@Mock
private Class3 class3;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testWithMock() {
Mockito.when(class3.method3()).thenReturn("mocked");
assertEquals("mocked", class1.doTry());
}
}