gpt4 book ai didi

easymock - 如何使用 EasyMock 创建 "deep"模拟

转载 作者:行者123 更新时间:2023-12-02 19:07:36 26 4
gpt4 key购买 nike

我有一个间接使用类 Foo 的测试用例。为了测试用例的目的,我不在乎 Foo 是什么。我应该能够 mock 它。

Foo mock = EasyMock.createMock(Foo.class);

但是,测试用例使用了一个调用 Foo 上的一些方法的库。其中一些方法返回对象,然后该库对这些返回的对象调用一些方法。出于此测试的目的,这些对象是什么并不重要,只要它们不为 null 并且不会导致 NullPointerExceptions 即可。

我一直在为这个库调用的每个对象和方法添加一大堆期望调用,如下所示:

Bar bar = EasyMock.createMock(Bar.class);
Baz baz = EasyMock.createMock(Baz.class);
EasyMock.expect(mock.getBar()).andReturn(bar).anyTimes();
EasyMock.expect(bar.getBaz()).andReturn(baz).anyTimes();

基本上,只是一遍又一遍地创建对该库最终调用的任何方法的期望。

同样,对象本身对于我的测试目的并不重要。库只需要它们在大多数情况下不为空。

有没有办法自动执行此操作?我想要的是某种“深度模拟”功能,我可以告诉 EasyMock 自动返回通过模拟对象获取的任何对象的模拟对象。

最佳答案

事实证明,mockito 内置了此功能:

Foo mock = Mockito.mock(Foo.class, Mockito.RETURNS_DEEP_STUBS);

关于easymock - 如何使用 EasyMock 创建 "deep"模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com