gpt4 book ai didi

java - 如何使用 Mockito 模拟我的父类(super class)的方法

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:51 26 4
gpt4 key购买 nike

我在模拟没有引用的方法的数据时遇到问题,例如 getMethod();不知道模拟框架如何知道它。下面是我面临的问题,即无法在我的代码中设置 HttpRequest 和 URIInfo 的代码。

是否可以绕过该方法。

Class A {

private HttpServletRequest httpRequest;
private UriInfo uriInfo;

public HttpServletRequest getReq() {
return httpRequest;
}
public void setReq(HttpServletRequest req) {
this.httpRequest = req;
}


public UriInfo getUriInfo() {
return uriInfo;
}
public void setUriInfo(UriInfo uriInfo) {
this.uriInfo = uriInfo;
}}



class B extends A {

// some code

}

class C extends B {

protected Object executeCall(Object beIn) throws Exception{

prepareUpdateConfigurationRequest();
// some other methods.
return "";
}
private void prepareUpdateConfigurationRequest() {
implPutCustomerProductOrderIdProductConfigurationsImpl.setReq(getReq());
implPutCustomerProductOrderIdProductConfigurationsImpl.setUriInfo(getUriInfo());
}}

//使用 Mockito 框架测试类

@RunWith(MockitoJUnitRunner.class)
public class CTest {

@Mock
private A a = Mockito.mock(A.class);
@InjectMocks
private C c = new C();

private ImplBackEndInput implBackEndInput;

@Test
public void testExecuteCallObject() {



implBackEndInput = new ImplBackEndInput();

UriInfo uriInfo = Mockito.mock(UriInfo.class);

Mockito.when(a.getUriInfo()).thenReturn(uriInfo);
Mockito.when(a.getReq()).thenReturn(httpServletRequest);

try {
c.executeCall(implBackEndInput);
} catch (Exception e) {
}

}
}

最佳答案

protected 或私有(private)方法不能使用 Mockito 进行模拟,我建议如果您使用 spring 在测试包中创建一个 DummyC 类,将其引用为 springConfig 中的父类,并使其在调用时仅返回对象。这样,该类将使用该方法作为您不需要测试的真实类的旁路。

关于java - 如何使用 Mockito 模拟我的父类(super class)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com