Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何mock.collect方法PowerMock Junit_Junit_Powermock - Fatal编程技术网

如何mock.collect方法PowerMock Junit

如何mock.collect方法PowerMock Junit,junit,powermock,Junit,Powermock,我需要知道如何模拟使用.collect(Java8)方法的方法,下面是该方法 //return data public String getData(List<Node> nodes) { return nodes.stream().map(node-> getService().compare(new Reference()).collect(Collectors.joining(~)); } protected getService() {

我需要知道如何模拟使用.collect(Java8)方法的方法,下面是该方法

//return data
public String getData(List<Node> nodes)
{
    return nodes.stream().map(node->
        getService().compare(new Reference()).collect(Collectors.joining(~));
 }

protected getService()
{
    return service;
}
现在我怎么能嘲笑你呢

getService().compare(new Reference()).collect(Collectors.joining(~)); 

Compare方法返回CompareRef对象。我可以使用PowerMock。

在您的情况下,我建议模拟
compare()
方法,而不是
collect()

因为您使用的是流,所以可能会有一些节点。要使用相同的
Reference
对象模拟
compare()
的乘法调用行为,您可以尝试以下变体:

final CompareRef expectedCompareRef1 = new CompareRef();
final CompareRef expectedCompareRef2 = new CompareRef();
final CompareRef expectedCompareRef3 = new CompareRef();

when(service.compare(eq(new Reference())).thenReturn(expectedCompareRef1).thenReturn(expectedCompareRef2).thenReturn(expectedCompareRef3);
然后调用您的
getData()
方法:

final List<Nodes> givenNodes = new ArrayList<>();
givenNodes.add(node1);
givenNodes.add(node2);
givenNodes.add(node3);

final String actualResult = myInstance.getData(givenNodes);
Assert.assertEquals("TODO: expectedResult", actualResult);
final List givenNodes=new ArrayList();
添加(节点1);
添加(node2);
添加(node3);
最终字符串actualResult=myInstance.getData(给定节点);
Assert.assertEquals(“TODO:expectedResult”,actualResult);
因此,流将收集所有测试
expectedCompareRefN
对象

注意,要使
eq(new Reference())
工作,您的
Reference
类应该实现
equals/hashCode
方法。否则
eq(new Reference())
将始终为false,并且
thenReturn
将不会返回指定的预期对象

final List<Nodes> givenNodes = new ArrayList<>();
givenNodes.add(node1);
givenNodes.add(node2);
givenNodes.add(node3);

final String actualResult = myInstance.getData(givenNodes);
Assert.assertEquals("TODO: expectedResult", actualResult);