Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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
使用任何Java模拟框架模拟聚合_Java_Testing_Mockito_Easymock_Powermock - Fatal编程技术网

使用任何Java模拟框架模拟聚合

使用任何Java模拟框架模拟聚合,java,testing,mockito,easymock,powermock,Java,Testing,Mockito,Easymock,Powermock,是否有任何模拟框架可以对聚合中的每个孩子进行“完全”模拟?比如说 final Report report = createMock(Report.class); expect(report.getReportSides().get(0).getSideGroup().get(1)).andStubReturn(createSomething()); 在我开始编写一些大规模的测试代码之前,我希望这个带有这些索引的调用可以被模拟,而不需要我做任何其他事情。。。在任何框架中,EasyMock、Pow

是否有任何模拟框架可以对聚合中的每个孩子进行“完全”模拟?比如说

final Report report = createMock(Report.class);
expect(report.getReportSides().get(0).getSideGroup().get(1)).andStubReturn(createSomething());
在我开始编写一些大规模的测试代码之前,我希望这个带有这些索引的调用可以被模拟,而不需要我做任何其他事情。。。在任何框架中,EasyMock、PowerMock、Mockito等都可以这样做吗


(类示例是从客户XML自动生成的遗留类,因此类结构怪异,并且没有域服务层)。

我确信您知道强烈建议不要模拟值,但是对于遗留类,可能会有一些古怪的东西

无论如何,以下声明可能会完成大部分工作:

mock(Report.class, RETURNS_DEEP_STUBS)
但是,您的聚合中似乎有集合
report.getReportSides().get(0).getSideGroup().get(1)
,并且由于类型泛型的原因,erasure Mockito或其他框架无法推断应该在集合中的运行时类型,因此,
RETURNS\u DEEP\u STUBS
answer将创建一个与通过反射读取的返回类型相匹配的模拟,并且在java集合中肯定是对
对象本身的模拟。因此,您必须手动处理它

作为旁注,mockito trunk中的泛型类型已经取得了进展,它可以检索嵌入到类中的更多泛型信息,它显然不接近任何具有运行时内省(对于当前版本的Java来说是不可能的),但它离它越来越近了。 升级后的
返回\u DEEP\u存根
可以执行以下操作:

public interface A<K extends MyKeyType> extends Map<K, MyValueType> {}

deepStubMock.entrySet().iterator().next()
    .getValue().someValueTypeMethod().eventuallyFollowedByAnotherMethod();
公共接口A扩展映射{}
deepStubMock.entrySet().iterator().next()
.getValue().someValueTypeMethod();

编辑:看起来大卫在评论中回答了我的问题:)

我不确定我是否完全理解你的问题;但是Mockito()中的RETURNS\u DEEP\u STUBS答案是您需要的特性吗?