用于部分/全部模拟的Mockito间谍无法正常工作

时间:2018-10-18 07:59:07

标签: java spring mockito spy

我打算部分模拟一个Spring bean,以便Spy只能模拟另一个方法中调用的一个方法

@ActiveProfiles(profiles = {Profiles.TEST})
public class ServiceTestMockito {

    @Autowired
    private ServiceBean serviceBean;

    @Autowired
    private DAO dao;

    @Test
    public void testSpy() {

        ServiceBean serviceBeanSpy = Mockito.spy(serviceBean);
        doReturn(true).when(serviceBeanSpy).methodB(Mockito.any());
        Assert.isTrue(serviceBeanSpy.methodA(new Employee()), "This should be true");      
    }
}

public class ServiceBean {

    public Boolean methodB(Employee employee) {
        return false;
    }

    public Boolean methodA(Employee employee){
        return methodB(employee);       
    }

}

我使用调试器查看serviceBean是否与serverBeanSpy不同,但事实证明它们是相同的。我不确定我在这里想念什么

我确实提到了以下问题,但是每个人似乎都发现了模拟声明/调用方式的问题,但是我遵循以下问题/论坛中提到的格式:

Question_1

Mockito_Docs

Question_2

Question_3

因此,当我运行测试时,断言始终会失败,因为间谍无法正常工作,并且我从methodB返回了实际的错误

我什至将调试器移到methodB上,并且看到它正在执行。我相信根本不应该调用methodB。

0 个答案:

没有答案