java - 如何从流利的接口方法返回相同的模拟
问题描述
假设我有以下代码:
public class OuterClass {
@Inject
InjectedClass injected;
public void method() {
injected
.methodA()
.methodB()
.methodC();
}
}
以及以下测试:
@RunWith(MockitoJUnitRunner.class)
public class OuterClassTest{
@InjectMocks
OuterClass outer;
@Mock
InjectedClass injected;
@Test
public void testMethod() {
outer.method();
verify(injected).methodA();
verify(injected).methodB();
verify(injected).methodC();
}
}
有没有办法告诉 Mockito 从每个方法调用中返回相同的模拟InjectedClass
?我尝试使用@Mock(answer = Answers.RETURNS_DEEP_STUBS)
,但在这种情况下,Mockito 似乎从每个方法调用中返回一个新的模拟。这意味着 thatverify(injected).methodA()
会通过,但不会通过methodB()
and methodC()
,因为它们是在不同的模拟上调用的。
目前我必须有这样的setUp()
方法:
when(injected.methodA()).thenReturn(injected);
when(injected.methodB()).thenReturn(injected);
when(injected.methodC()).thenReturn(injected);
...这是丑陋和讨厌的。你知道更好的方法吗?
解决方案
推荐阅读
- r - rasterVis - 使用 levelplot 在中间设置底部图
- java - 获取偏移量 5705 超出分区范围,正在重置偏移量
- python - clear() 没有清除 python selenium 中的文本框字段
- java - 现有多对多中所需的新实体
- javascript - 如何使用 recorder.js 对象调用此函数“.record()”?
- python - 找不到页面 http://127.0.0.1:8000/manageAccount/a/delete
- c++ - 如何从输入文本文件中识别特定单词(如 C 关键字)并将它们输出到另一个外部文本文件中,每行一个单词?
- python - 在 Python 中将每日值聚合到每月
- javascript - 如何使用 nodejs 或 javascript 解密密码
- java - 在 Android Studio 中检测到不支持的模块