gpt4 book ai didi

java - 使用 Mockito 从 void 方法中嗅出对象?

转载 作者:行者123 更新时间:2023-11-29 07:37:37 24 4
gpt4 key购买 nike

为了简单起见,我有一个测试方法:

public void someMethod(SomeObject object) {
StringBuffer sb = new StringBuffer();
sb.append("SOMETHING ").append("ELSE");
object.setSomething(sb.toString());
}

目前我对 setSomething() 方法是否正常工作并不感兴趣。相反,我想看看 sb.toString() 是否返回什么。

有没有办法用 Mockito 访问 StringBuffer sb 对象?

最佳答案

您可以基于模拟进行简单的验证。

创建模拟,调用方法,验证模拟已使用给定参数多次调用。

@Test
public void doTest() {
//Setup mock
SomeObject mock = mock(SomeObject.class);

//Call method
someMethod(mock);

//Verify
verify(mock, times(1)).setSomething("SOMETHING ELSE");
}

有人还会争辩说,将被测方法重构为如下内容:

public String someMethod() {
StringBuffer sb = new StringBuffer();
sb.append("SOMETHING ").append("ELSE");
return sb.toString();
}

而且在不模拟任何东西的情况下,方法(附加/合并字符串)的测试会更容易测试。

测试看起来像这样:

@Test
public void doTest() {
//Call method
String result = someMethod();

assertEquals("SOMETHING ELSE", result);
}

关于java - 使用 Mockito 从 void 方法中嗅出对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33757772/

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