我正在使用spring boot,spring integration,gradle项目。我正在使用junit和Mockito嘲笑我的肥皂服务。基本上我的应用程序有这三个类。 Junit Class用于模拟肥皂服务。
@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服务的接口。
`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();”中得到了nullpointerexception。测试方法任何人都可以在这个问题上帮助我。提前谢谢。
答案 0 :(得分:2)
问题是模拟所期望的request
实例与实际传递的实例不匹配。因此条件不匹配,模拟返回null
。
使用
when(mock.getResponse(
Mockito.isA(GetAuthorizedWebSendTransferProjects.class)))
.thenReturn(...)