You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerMock模拟PdRequest后手动赋值仍返回NULL问题求助

单元测试Mock使用问题

我是单元测试新手,正在学习Mock的使用方式。我用PowerMockRunner模拟PdRequest.class,但所有变量都返回NULL,手动赋值后结果依然如此。

我尝试过以下操作:

  • 使用@PrepareForTest和@ExtendWith注解
  • 添加initMocks(this)方法

测试代码

@RunWith(PowerMockRunner.class)
public class PerformanceServiceImplTest 
PdRequest pdRequest = mock(PdRequest.class);
when(pdRequest.getLoginUserId()).thenReturn("42");
when(pdRequest.getYear()).thenReturn("Year");
doNothing().when(pdRequest).setLoginUserId((String) any());
doNothing().when(pdRequest).setCurrMetric((String) any());
doNothing().when(pdRequest).setCurrentLink((BreadCrumLink) any());
doNothing().when(pdRequest).setFullView((String) any());
doNothing().when(pdRequest).setManagerId((String) any());
doNothing().when(pdRequest).setMetric((String) any());
doNothing().when(pdRequest).setPdBoard((String) any());
doNothing().when(pdRequest).setRegionId((String) any());
doNothing().when(pdRequest).setRoleId((String) any());
doNothing().when(pdRequest).setRoleLevel((Integer) any());
doNothing().when(pdRequest).setRoleName((String) any());
doNothing().when(pdRequest).setSalesAbf((String) any());
doNothing().when(pdRequest).setSalesMm((String) any());
doNothing().when(pdRequest).setSalesRsme((String) any());
doNothing().when(pdRequest).setStaffId((String) any());
doNothing().when(pdRequest).setStaffIdList((List<String>) any());
doNothing().when(pdRequest).setTeamId((String) any());
doNothing().when(pdRequest).setYear((String) any());
pdRequest.setCurrMetric("Curr Metric");
pdRequest.setCurrentLink(breadCrumLink);
pdRequest.setFullView("Full View");
pdRequest.setLoginUserId("42");
pdRequest.setManagerId("42");
pdRequest.setMetric("Metric");
pdRequest.setPdBoard("Pd Board");
pdRequest.setRegionId("us-east-2");
pdRequest.setRoleId("42");
pdRequest.setRoleLevel(1);
pdRequest.setRoleName("Role Name");
pdRequest.setSalesAbf("Sales Abf");
pdRequest.setSalesMm("Sales Mm");
pdRequest.setSalesRsme("Sales Rsme");
pdRequest.setStaffId("42");
pdRequest.setStaffIdList(new ArrayList<>());
pdRequest.setTeamId("42");
pdRequest.setYear("Year");

调试情况

调试时观察到PdRequest实例的所有字段均为NULL

疑问

  1. 请问我遗漏了什么配置?
  2. 直接创建new PdRequest()并手动设置所有值是否更好?

内容的提问来源于stack exchange,提问作者anggor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:55:30