使用 Mockito,我习惯于将 Mocks 注入(inject)到单个被测类中,如下所示:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest() {
@InjectMocks
private MyClass myClass;
@Mock
private OtherClass1 mockedClass1UsedByMyClass;
@Mock
private OtherClass2 mockedClass2UsedByMyClass;
但是假设 MyClass
也使用了一个简单的类 HelperClass
,它提供了一些简单的“辅助”方法并且没有任何进一步的依赖:
public class MyClass {
@Autowired
private OtherClass1 otherClass1;
@Autowired
private OtherClass2 otherClass2;
@Autowired
private HelperClass helperClass; // Don't want to mock this one...
宁愿使用此类的真实版本,也不愿尝试模拟返回的所有内容,因为它所做的只是一些简单的、确定性的处理。有办法做到这一点吗?
最佳答案
如果你想利用 @InjectMocks
然后使用 @Spy .. 默认情况下,它将使用原始 impl,您可以手动选择要模拟的方法:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest() {
@InjectMocks
private MyClass myClass;
@Mock
private OtherClass1 mockedClass1UsedByMyClass;
@Spy
private HelperClass helperClass;
@Mock
private OtherClass2 mockedClass2UsedByMyClass;
}
关于java - 如何告诉 Mockito 使用帮助类的真实(未模拟)版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42646806/