java - 如何验证是否在接口的 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()
解决方案
根据如何验证行为文档,语法为:
PowerMockito.verifyStatic(Factory.class);
Factory.getProviders(selectionCriteria);
推荐阅读
- azure - 使用身份 ADO API 找不到 AAD 组
- ansible - Ansible:如何通过 SSH 克隆私有 Git 存储库,并在目标上生成和加密密钥
- asp.net - Include 中使用的 Lambda 表达式在使用 where 时无效
- mongodb - MongoDB 查找项目,包括来自其他引用集合的数据
- javascript - 屏幕宽度较小时如何固定侧边栏的位置?
- java - 如何计算数组中每个元素的出现次数?
- arrays - Wordpress 定制器 - 为另一个控件使用设置值
- laravel - SQLSTATE [42S22]:未找到列:1054“字段列表”中的未知列“type_article_id”
- powershell - 使用Powershell,如何根据不同命名约定的重复文件的存在返回文件列表?
- javascript - 由于我的水平滚动 (LocomotiveScroll),无法更新我的鼠标位置