我无法让Mockito覆盖我正在测试的类中的方法。
@Test
public void test_classToTest() throws Exception {
DependencyA dependencyA = mock(DependencyA.class);
DependencyB dependencyB = mock(DependencyB.class);
DependencyC dependencyC = mock(DependencyC.class);
ClassToTest classToTest = ClassToTest.builder().dependencyA(dependencyA)
.dependencyB(dependencyB).dependencyC(dependencyC).build();
classToTest= Mockito.spy(classToTest);
Mockito.doReturn("This is not the method you are looking for").when(classToTest).storeContent(null, null, null);
String result = classToTest.copyContent(someVariable, SOME_CONSTANT);
我要覆盖的方法是classToTest.storeContent(),它是从classToTest.copyContent()内部调用的。我知道这堂课有点臭,但我无法对其进行重构。但是,这不是一个非常复杂的设置,我不确定为什么要调用实际的.storeContent()方法。
答案 0 :(得分:2)
我建议不要使用ArgumentMatchers.any
null
参数来设置模拟的storeContent
方法。
例如
import static org.mockito.ArgumentMatchers.*;
// ...
Mockito.doReturn("This is not the method you are looking for").when(classToTest).storeContent(any(), any(), any());
答案 1 :(得分:0)
Mockito(和其他模拟工具)中存在一个限制,即无法NaN
方法进行存根。
也许您的df[df.b.isnull()] # or notnull(), respectively
被标记为final
吗?
如果是这种情况,只需删除ClassToTest#storeContent
关键字,即可启动存根机制。