当我尝试使用反射访问私有方法时,模拟对象不起作用
主要类别:
@Component
public class ActualClass{
@Autowired
MockClass data;
private String sampleMethod(String data){
//
List<String> list=data.getdata("something") // trying to mock this line
//}
}
模拟课程:
@Component
public class MockClass{
public List<String> getdata(String serviceName){
return restTemplate.getForObject("http://localhost:9000/data/something",
ArrayList.class); this line will return some datas as list}
}
我的测试用例:
public class TestCases{
@Autowired
MockClass mockobj;
@Autowired
@InjectedMocks
ActualClass actualClass
@Test
public void valid(){
MockitoAnnotations.initMocks(this);
List<String> obj=new ArrayList<String>();
obj.add("something")
when(mockobj.getdata("something")).thenreturn(obj);
Class<?> cObject=Class.forName("com.ActualClass");
ActualClass actualClass=(ActualClass) cObject.newInstance();
Method method=cObject.getDeclaredMethod("sampleMethod",String.class);
method.setAccessible(true);
method.invoke(actualClass,"date");}
}
有人可以告诉我我的测试用例出了什么问题吗?当我访问公共方法时,相同的模拟对象正在工作。
我只有私人方法有问题。
我该如何解决?