java 匿名类 泛型类型_处理与泛型匿名类的Mockito

我想写使用Powermockito用于以下方法单元测试 -处理与泛型匿名类的Mockito

public String getGenerator(String json) throws IOException {

String jwt = "";

ObjectMapper mapper = new ObjectMapper();

// convert JSON string to Map

Map map = mapper.readValue(json, new TypeReference>() {

}); // Here passing TypeReference annonymously

// Create a JWT

JWTGenerator generator = new JWTGenerator();

if (map != null && map.size() > 0) {

jwt = generator.createJWT(map);

}

return jwt;

}

我写的测试方法 -

@Test

public void testGetJWTGenerator() throws Exception {

ObjectMapper mockMapper = PowerMockito.mock(ObjectMapper.class);

PowerMockito.whenNew(ObjectMapper.class).withNoArguments().thenReturn(mockMapper);

JWTGenerator mockJWTDecoder = PowerMockito.mock(JWTGenerator.class);

PowerMockito.whenNew(JWTGenerator.class).withNoArguments().thenReturn(mockJWTDecoder);

Map anyMap = new HashMap();

anyMap.put("testStr", new Object());

TypeReference> mockTypeReference = (TypeReference>) PowerMockito.mock(TypeReference.class);

PowerMockito.whenNew(TypeReference.class).withNoArguments().thenReturn(mockTypeReference);

PowerMockito.when(mockMapper.readValue(Mockito.anyString(), Mockito.eq(mockTypeReference))).thenReturn(anyMap);

PowerMockito.when(mockJWTDecoder.createJWT(anyMap)).thenReturn(Mockito.anyString());

utilityController = new UtilityController();

utilityController.getJWTGenerator("{\"someStr\":\"someStr\"}");

Mockito.verify(mockJWTDecoder, Mockito.times(1)).createJWT(anyMap);

}

当我运行这个测试我总是能得到它失败的说法 -

Wanted but not invoked:

jWTGenerator.createJWT(

{[email protected]}

);

它看起来像存根不工作,我总是得到“空”这个line -

Map map = mapper.readValue(json, new TypeReference>() {

}); // Here passing TypeReference annonymously

是因为TypeReference类的匿名实例吗?

2016-11-29

Saurabh


版权声明:本文为weixin_28764661原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。