gpt4 book ai didi

java - 如何使用 Mockito/PowerMockito 解决 ClassCastException

转载 作者:行者123 更新时间:2023-11-30 06:47:12 26 4
gpt4 key购买 nike

我遇到的情况是需要使用 PowerMocklito 模拟两个静态方法。它为我的第一行代码提供了一个模拟对象,但随后再次调用相同的方法,但这次它返回一个不同的对象,并且抛出 ClassCastException

测试中的方法

ESignatureJaxBContextFactory context = (ESignatureJaxBContextFactory) AppContext.getBean("jaxbContextFactory");
/// More code
DocusignRESTClient client = (DocusignRESTClient) AppContext.getBean("restServiceClient");

朱尼特

private ESignatureJaxBContextFactory eSignatureJaxBContextFactory;
eSignatureJaxBContextFactory = mock( ESignatureJaxBContextFactory.class );

PowerMockito.when( AppContext.getBean( any( String.class ) ) ).thenReturn( eSignatureJaxBContextFactory );

所以上面的代码行返回我模拟上下文,但是当它尝试获取客户端时我得到一个异常。我该如何测试这个?

提前致谢

最佳答案

问题是你在 mock AppContext.getBean对于 any( String.class )试试这个:

PowerMockito.when(AppContext.getBean("jaxbContextFactory"))
.thenReturn(eSignatureJaxBContextFactory);
PowerMockito.when(AppContext.getBean("restServiceClient"))
.thenReturn(docusignRESTClient);

在这种情况下,当 AppContext.getBean使用参数 "jaxbContextFactory" 调用它将返回eSignatureJaxBContextFactory但不适用于任何其他参数。所以你还需要用参数 "restServiceClient" 来模拟调用.

测试它的其他方法是提供一组连续的返回值:

PowerMockito.when(AppContext.getBean(any(String.class)))
.thenReturn(eSignatureJaxBContextFactory, docusignRESTClient);

在这种情况下,您仍然模拟 AppContext.getBean 的任何调用使用任何字符串值作为参数,但告诉mockito返回 eSignatureJaxBContextFactory第一次调用并返回 docusignRESTClient第二次和任何进一步的调用。

关于java - 如何使用 Mockito/PowerMockito 解决 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43506130/

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