gpt4 book ai didi

soap - 使用 mockito 模拟对象时出现空指针异常

转载 作者:行者123 更新时间:2023-12-03 03:15:13 30 4
gpt4 key购买 nike

我正在工作 spring boot、spring 集成、gradle 项目。我正在使用 junit 和 Mockito 来模拟我的 SOAP 服务。基本上我的应用程序有这三个类。
用于模拟 SOAP 服务的 Junit 类。

 @Before
public void setup() {
gw=Mockito.mock(ProjectGateway.class);
pc=new ProjectController();
pc.setGateWay(gw);
}

@Test
public void testGetProject() throws Exception {
GetAuthorizedWebSendTransferProjects mockRequest=new GetAuthorizedWebSendTransferProjects();
GetAuthorizedWebSendTransferProjectsResponse mockResponse=getMockResponse();
when(gw.getResponse(mockRequest)).thenReturn(mockResponse);
List<Project> projects=pc.getProject();
assertEquals(1,projects.size());
}`

和一个调用soap服务的接口(interface)。
`public interface ProjectGateway {

public GetAuthorizedWebSendTransferProjectsResponse getResponse(
GetAuthorizedWebSendTransferProjects request);

}'

以及我需要进行单元测试的方法。
 @RequestMapping(value = "/projects", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody List<Project> getProject() {
GetAuthorizedWebSendTransferProjects request = new GetAuthorizedWebSendTransferProjects();
GetAuthorizedWebSendTransferProjectsResponse response = gw
.getResponse(request);
JAXBElement<ArrayOfProjectContainer> arr = response
.getGetAuthorizedWebSendTransferProjectsResult();
ArrayOfProjectContainer arr1 = arr.getValue();
List<ProjectContainer> arr2 = arr1.getProjectContainer();
List<Project> projects = getPopulatedProjectList(arr2);
return projects;
}

但是我在“List projects=pc.getProject();”中得到了一个空指针异常的测试方法。任何人都可以在这个问题上帮助我。先感谢您。

最佳答案

问题是 request 的实例模拟所期望的与实际传递的实例不匹配。因此条件不匹配,模拟返回 null .

采用

 when(mock.getResponse(
Mockito.isA(GetAuthorizedWebSendTransferProjects.class)))
.thenReturn(...)

关于soap - 使用 mockito 模拟对象时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278087/

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