junit 如何模拟测试类的方法

axr492tv  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(151)

如何模拟测试类的方法?
例如:

class Test {

publick String mainMethod() {
String test = methdotWhichNeedMock("Hello", "World");
return test;
}
public String methodtWhichNeedMock(String s1, String s2) {
return s1 + s2;
}

}

我试着用

when(test.methdotWhichNeedMock(s1 , s2)).thenReturn("result");

和许多结构,如doThen...,但每次尝试我的程序做methdotWhichNeedMock方法的逻辑。
我的TestClass:

@ExtendWith(MockitoExtension.class)
class TestClass {
    @InjectMocks
    Test service;

    @Test
    void mainMethod() {
        when(service.methodtWhichNeedMock("s1", "s2")).thenReturn("new String");
        assertEquals("new String", service.mainMethod());
    }
}

我应该怎么做才能使methodtWhichNeedMock方法的逻辑不执行,而只是在我尝试调用它时返回我在thenReturn中编写的内容?

w7t8yxp5

w7t8yxp51#

使用@Spy如果你想部分地模拟一个类:

@ExtendWith(MockitoExtension.class)
class TestClass {
    @Spy
    Test service;

    @Test
    void mainMethod() {
        when(service.methodtWhichNeedMock("s1", "s2")).thenReturn("new String");
        assertEquals("new String", service.mainMethod());
    }
}

因此,对于所有未被模拟的方法,将执行真实的的代码,其余的将执行模拟

相关问题