首页 > 解决方案 > Junit忽略方法模拟

问题描述

我在现有类中创建了一个 Junit 测试用例,我想忽略一些模拟

@InjectMock
private HomeService homeService;

@Mock
private HomeUtility homeUtility;

@Test
public void testIsFilterWorkedTrue() {

    homeService.getData();
}

家庭服务.java

class HomeService {

    @Autowired
    private HomeUtility homeUtility;
    
    public [RETURN_TYPE] getData() {

        // call mocked method
        output = mockedMethodcall();

        test = homeUtility.callMethod(output);
        return test;
    }
}

在上面的代码中, for homeUtility.callMethod(output);,我不希望它被嘲笑,应该进入方法内部。我必须使用

@Mock
private HomeUtility homeUtility;

因为它也被用于其他方法。我怎么能忽略它

标签: javajunit

解决方案


您可以thenCallRealMethod用于确保为该对象调用实际方法。

@InjectMock
private HomeService homeService;

@Mock
private HomeUtility homeUtility;

@Test
public void testIsFilterWorkedTrue() {
    when( homeUtility.callMethod(anyString()).thenCallRealMethod() )
    homeService.getData();
}

您也可以使用spy它。更多阅读:https ://www.javabullets.com/mockito-partial-mocks-mock-and-spy/


推荐阅读