首页 > 解决方案 > 如何验证是否在接口的 impl 上调用了方法

问题描述

这是一个场景

public class MyService{

    public void method1(){
        method2();
    }

    private void method2(){

        List<Providers> providers = Factory.getProviders(selectionCriteria);
        providers.forEach(provider->{
            provider.method();
        })

    }
}

我如何验证provider.method()被调用?

注意:工厂持有选择标准到列表的映射。提供者实现了一个接口并提供了抽象方法的实现,我使用 PowerMock 静态模拟了工厂,但是当我使用 Mockito.verify(provider).method() - 我失败了

设置@Spy provider1 PowerMockito.when(Factory.getProviers(Mockito.any())).thenReturn(Arrays.asList(provider1))

Test Code

Mockito.verify(provider,Mockito.times(1)).method()

标签: javajunit

解决方案


根据如何验证行为文档,语法为:

PowerMockito.verifyStatic(Factory.class); 
Factory.getProviders(selectionCriteria); 

推荐阅读