如何告诉Mockito使用辅助类的真实(非模拟)版本?

时间:2017-03-07 11:13:17

标签: java spring junit mocking mockito

对于Mockito,我习惯于将Mocks注入单个测试阶段,如下所示:

@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...

宁愿使用这个类的真实版本,而不是试图模拟返回的所有内容,因为它所做的只是一些简单的,确定性的处理。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

如果您想利用@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;
}