使用Mockito-mock,static方法

示例

public List<Authen> selectAuthenList(Authen authen) {
        //静态方法
        LoggedInUser loginUser = WebUtil.getLoggedInUser();
		String tenantId = loginUser.getTenantId();
		authen.setTenantId(Long.parseLong(tenantId));
        //业务
		return authenMapper.selectAuthenList(authen);
}

静态方法示例

public class WebUtil {
    public static LoggedInUser getLoggedInUser() {
        //方法逻辑
        return;
    }
}

测试方法

@RunWith(PowerMockRunner.class)
//要mock的静态类
@PrepareForTest(WebUtil.class)
@PowerMockIgnore("jdk.internal.reflect.*")
public class AuthenServiceImplTest extends BaseMockitoTest {
    @InjectMocks
    private AuthenServiceImpl authenService;

    @Mock
    private AuthenMapper authenMapper;
    
    @Test
    public void selectAuthenListTest() {
        
        Authen authen = new Authen();
        authen.setAppid("appId");
        authen.setId(1L);
        //返回需要的参数
        LoggedInUser loggedInUser = new LoggedInUser();
        loggedInUser.setTenantId("1234");
        loggedInUser.setLoginName("loginName");
        //注入要mock的类
        PowerMockito.mockStatic(WebUtil.class);
        
        //mock静态方法
        PowerMockito.when(WebUtil.getLoggedInUser()).thenReturn(loggedInUser);
        
        when(authenMapper.selectAuthenList(anyObject())).thenReturn(list);

        List<Authen> authens = authenService.selectAuthenList(authen);

        assertThat(authens.get(0).getAppid(),is("appId"));
        
    }
}

 

posted @   Dshzs月  阅读(1290)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示