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
疑问
- 请问我遗漏了什么配置?
- 直接创建
new PdRequest()并手动设置所有值是否更好?
内容的提问来源于stack exchange,提问作者anggor
相关产品推荐
相关产品推荐

