Mockito.spy 执行不同的代码库

Mockito.spy executing different code base

我正在使用以下 mockito。

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>3.5.13</version>
</dependency>

我有class

public class Test(){
  private String config;
  public getConfig()
 {
   return config;
 }

  public String test(){
   return getConfig();
  }
}

测试class

@RunWith(MockitoJUnitRunner.class)
public class TestClass(){

@Test
public void mockTest()
{
Test test = Mockito.spy(Test.class);
Mockito.when(test.getConfig()).thenReturn("test");
String result = test.test();
assertEquals("test",result);
}

但是模拟不起作用。调试时代码库也不同。一些行被跳过。任何人都可以在这里帮忙。

当您使用 Mockito.spy 时,您应该传递现有(创建的)对象,例如 new Test() 在您的情况下。

示例:

public class Spy {
    private String config = "real";

    public String getConfig() {
        return config;
    }

    public String test() {
        return getConfig();
    }
}

并测试:

@Test
public void mockTest() {
    Spy test = Mockito.spy(new Spy());
    Mockito.when(test.getConfig()).thenReturn("test");

    String result = test.test();

    assertEquals("test", result);
}