gpt4 book ai didi

java - Mockito 如何用输出参数模拟 void 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:39 24 4
gpt4 key购买 nike

我有一个通知参数的无效方法“functionVoid”。

public class MyMotherClass {
@Inject
MyClass2 myClass2

public String motherFunction(){
....
String test = "";
myClass2.functionVoid(test);

if (test.equals("")) {
IllegalArgumentException ile = new IllegalArgumentException(
"Argument is not valid");
logger.throwing(ile);
throw ile;
}
....
}
}

public class MyClass2 {

public void functionVoid(String output_value)
{ ....
output_value = "test";

....
}
}

如何在 JUnit 方法我的方法“motherFunction”中模拟此方法?在我的例子中,“test”变量仍然是空的。

@RunWith(MockitoJUnitRunner.class)
public class MyMotherClassTest {

@Mock
private MyClass2 myClass2 ;

@InjectMock
private final MyMotherClass myMotherClass = new MyMotherClass ();

@Test
public void test(){

myMotherClass.motherFunction();

}
}

最佳答案

如果你想模拟 motherFunction 的返回结果,那么你不必担心方法的内部实现(最终调用 functionVoid)。您需要做的是向 Mockito 提供有关在调用方法 motherFunction 时执行的操作的说明,这可以通过 when 带语法的子句;

    when(mockedObject.motherFunction()).thenReturn("Any old string");

如果这没有达到您想要达到的目的,请查看 how to mock void methods在文档中并确定 doAnswer 的使用是否适用于此处,例如;

doAnswer(new Answer<Void>() {

@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
String output_value = invocation.getArguments()[0];
output_value = "Not blank";
return null;
}
}).when(myClass2).functionVoid(anyString());

关于java - Mockito 如何用输出参数模拟 void 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14582339/

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