Mockito.doReturn(map).when(aggs).getAsMap();
可以解决该问题。 但是PowerMockito
中似乎有一个错误,因为这样编写它不应触发getAsMap()
方法的调用。
在尝试模拟]时获取NullPointerException> Aggregations.getAsMap()
我已经通过使用PowerMockito.doReturn(map).when(aggs).getAsMap()尝试了其他不同方法,但仍然面临相同的问题
@PrepareForTest(Aggregations.class) public class TestExample extends PowerMockTestCase { @Test public void testMyMethod() { Aggregations aggs = PowerMockito.mock(Aggregations.class); Cardinality cardinality = Mockito.mock(Cardinality.class); Map<String, Aggregation> map = new HashMap<String, Aggregation>(); map.put("sample", cardinality); Mockito.when(aggs.getAsMap()).thenReturn(map); } }
Mockito.when(aggs.getAsMap()).thenReturn(map);
调试aggs值包含以下值时
{Aggregations$MockitoMock$485838759@3084} Method threw 'java.lang.NullPointerException' exception. Cannot evaluate org.elasticsearch.search.aggregations.Aggregations$MockitoMock$485838759.toString()
使用testng及以下版本的罐子
powermock-api-mockito-2.0.2.jar
mockito-core-2.23.0.jar
<<NullPointerException
来自getAsMap
方法的调用。Mockito.doReturn(map).when(aggs).getAsMap();
可以解决该问题。 但是PowerMockito
中似乎有一个错误,因为这样编写它不应触发getAsMap()
方法的调用。
如果为运行测试的Mockito
(请参阅here
)启用最终模拟,则成功。
here