Soap 使用mockito模拟对象时获取空指针异常

Soap 使用mockito模拟对象时获取空指针异常,soap,junit,gradle,mockito,spring-integration,Soap,Junit,Gradle,Mockito,Spring Integration,我正在从事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 testG

我正在从事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());
}`
`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;
}
@RequestMapping(value=“/projects”,method=RequestMethod.GET,products=“application/json”)
public@ResponseBody List getProject(){
GetAuthorizedWebSendTransferProjects请求=新建GetAuthorizedWebSendTransferProjects();
GetAuthorizedWebSendTransferProjectsResponse=gw
.getResponse(请求);
JAXBElement arr=响应
.getGetAuthorizedWebSendTransferProjectsResult();
ArrayOfProjectContainer arr1=arr.getValue();
List arr2=arr1.getProjectContainer();
列表项目=getPopulatedProjectList(arr2);
返回项目;
}

但我在测试方法的“List projects=pc.getProject();”中得到了一个nullpointerexception。在这个问题上有人能帮我吗。提前感谢。

问题在于模拟所期望的
请求的实例与实际传递的实例不匹配。因此,条件不匹配,模拟将返回
null

使用


提供堆栈跟踪。你调试过了吗?是
pc
null还是来自
getProject
内的NPE?对于NPE发生的误导性陈述,我投-1票。嗨,约翰,谢谢。确切地说,我得到了你指定的npe。我还需要做什么样的配置。很抱歉问了这个愚蠢的问题。我对单元测试和模拟非常陌生。使用我在帖子中提到的“isA”。你应该将问题标记为已回答,这样其他人就不会认为你没有得到你需要的答案。
 when(mock.getResponse(
      Mockito.isA(GetAuthorizedWebSendTransferProjects.class)))
      .thenReturn(...)