java - 多个级别的@Mock 和@InjectMocks

标签 java mockito

所以我知道在 Mockito 中,@InjectMocks 会通过 @Mock 的注解注入(inject)任何它可以注入(inject)的东西,但是如何处理这种情况呢?

@Mock
private MockObject1 mockObject1;

@Mock
private MockObject2 mockObject2;

@InjectMocks
private SystemUnderTest systemUnderTest = new SystemUnderTest();

假设 MockObject2 有一个 MockObject1 类型的属性,而 SystemUnderTest 有一个 MockObject2 类型的属性。我想将 mockObject1 注入(inject)到 mockObject2 中,并将 mockObject2 注入(inject)到 systemUnderTest 中。

这可以通过注释实现吗?

最佳答案

由于我在这里没有得到任何回复,所以我在 Mockito 论坛上提问。这是讨论的链接:https://groups.google.com/d/topic/mockito/hWwcI5UHFi0/discussion

总结答案,从技术上讲,这会破坏 mock 的目的。您实际上应该只模拟 SystemUnderTest 类所需的对象。在本身就是模拟的对象中模拟事物是毫无意义的。

如果你真的想这样做,@spy 可以提供帮助

关于java - 多个级别的@Mock 和@InjectMocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300439/

相关文章:

java - Mockito:如何模拟具有特定属性值的对象

java - PowerMockito(与 Mockito)因 ExceptionInInitializerError 而失败

使用 Mockito 验证时来自 Kotlin 的 Java 泛型?

java - 是否可以根据 onResume 方法中的状态使用多种方法 android

Java 与 Kotlin 接口(interface)声明

Java Mapreduce group by compositekey 和排序

testing - 无法使用 Mockito 和 Kotlin 在测试中模拟 final类

java - 不能将 PowerMockRule 与 spring 一起使用

java - 在 JPA 中选择具有子实体的许多实体的最佳优化方法是什么?

java - MacOS 无法启动 android studio,需要更新 java