gpt4 book ai didi

java - Mockito - thenReturn 总是返回空对象

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:30 26 4
gpt4 key购买 nike

我正在尝试实现 Mockito 来测试一个特定的方法,但是 .thenReturn(...) 似乎总是返回一个空对象而不是我想要的:

剪切:

public class TestClassFacade {

// injected via Spring
private InterfaceBP bpService;

public void setBpService(InterfaceBP bpService) {

this.bpService = bpService;
}

public TestVO getTestData(String testString) throws Exception {

BPRequestVO bpRequestVO = new BPRequestVO();

bpRequestVO.setGroupNumber(testString) ;
bpRequestVO.setProductType("ALL") ;
bpRequestVO.setProfileType("Required - TEST") ;

IBPServiceResponse serviceResponse = bpService.getProduct(bpRequestVO); //PROBLEM

if (serviceResponse.getMessage().equalsIgnoreCase("BOB")) {

throw new Exception();

} else {

TestVO testVO = new TestVO();
}

return testVO;
}

}

Spring 配置:

<bean id="testClass" class="com.foo.TestClassFacade">

<property name="bpService" ref="bpService" />

</bean>

<bean id="bpService" class="class.cloud.BPService" />

Mockito 测试方法:

@RunWith(MockitoJUnitRunner.class)
public class BaseTest {

@Mock BPService mockBPService;
@InjectMocks TestClassFacade mockTestClassFacade;

private String testString = null;
private BPRequestVO someBPRequestVO = new BPRequestVO();
private IBPServiceResponse invalidServiceResponse = new BPServiceResponse();

@Test (expected = Exception.class)
public void getBPData_bobStatusCode_shouldThrowException() throws Exception {

invalidServiceResponse.setMessage("BOB");

someBPRequestVO.setGroupNumber(null);
someBPRequestVO.setProductType("ALL");
someBPRequestVO.setProfileType("Required - TEST");

System.out.println("1: " + someBPRequestVO.getGroupNumber());
System.out.println("2: " + someBPRequestVO.getProductType());
System.out.println("3: " + someBPRequestVO.getProfileType());
System.out.println("4: " + someBPRequestVO.getEffectiveDate());

when(mockBPService.getProduct(someBPRequestVO)).thenReturn(invalidServiceResponse);

mockTestClassFacade.getTestData(testString);

verify(mockBPService).getProduct(someBPRequestVO);
}
}

系统输出:

1: null
2: ALL
3: Required - TEST
4: null

这里发生的事情是,当我运行测试时,serviceResponse 对象在上面标有//PROBLEM 的 CUT 中的行中为 null。我的愿望是用我的测试方法中的“invalidServiceResponse”对象填充该对象。从我的 System.out.println 的输出来看,我的 bpRequestVO 在内容上与我的 someBPRequestVO 匹配。

有人可以告诉我我在这里缺少什么吗?

感谢您的宝贵时间!

最佳答案

除了在您的 BPRequestVO 类中创建一个 equals 方法之外,您还可以创建一个带有“any(YourObject.class)”的模拟参数,如下所示:

when(mockBPService.getProduct(any(BPRequestVO.class))).thenReturn(invalidServiceResponse);

关于java - Mockito - thenReturn 总是返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com