gpt4 book ai didi

java - 跳过发送 Junit 中的方法参数之一

转载 作者:行者123 更新时间:2023-12-02 10:45:15 25 4
gpt4 key购买 nike

我正在 JUnit 中调用一个公共(public)方法,并跳过对公共(public)方法正在调用的私有(private)方法的调用。

SampleService sampleServiceSpy = Mockito.spy(sampleService); // I have reference to it through @InjectMocks

String str = Mockito.doReturn("Hiii").when(sampleServiceSpy ).sendRequestToAnotherComponent(<ARG1>,"?",<ARG3>);

String res = sampleServiceSpy.processRequest(<ARG1>, <ARG2>);

这里processRequest()是公共(public)方法,私有(private)方法是sendRequestToAnotherComponent(),我正在跳过它,但问题是这个方法需要第二个参数作为随机UUID的目录路径每次生成的结果都不同,所以我无法 mock 它。 (示例代码中显示为 ?)

有什么方法可以传递任何值并可以跳过此方法吗?

我检查了 Mockito.anyString() 用于创建模拟对象,因此不能将其用于此测试用例。

最佳答案

要回答您的直接问题 - 使用匹配器 - 例如:

 Mockito.doReturn("Hiii").when(sampleServiceSpy).sendRequestToAnotherComponent(eq(<ARG1>),any(UUID.class), eq(<ARG3>));

但是不要尝试模拟正在测试的类的方法,而是注入(inject)其他组件的模拟。这样,测试就可以verify()调用另一个组件。

关于java - 跳过发送 Junit 中的方法参数之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631403/

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