【发布时间】:2021-09-24 13:58:58
【问题描述】:
我有一个类似的代码。
@Component
public class Example {
@Autowired
private GreetingService greetService;
public String greet(String name) {
AtomicReference<SomeCustomClass> temp = new AtomicReference<>();
String greeting = greetService.getGreeting(temp); // The method sets a value for temp
if(!Objects.isNull(temp.get())) {return greeting + " " + name;}
return "Hello, user";
}
}
我知道这是一个经过深思熟虑的例子,但我有一个类似的用例,它是这个的复杂版本。我想测试这个我想测试if 块的类。谁能帮我理解一下,如何测试if块内的代码。
【问题讨论】:
-
这里有太多问题了,从字段注入与构造函数注入到出于任何原因使用
AtomicReference -
注入一个
GreetingService,将temp设置为非空值。 -
GreetingService 将是一个模拟对象,对吧? @AndyTurner 如何设置局部变量的值?你能详细说明一下吗?
-
@Eugene 我只是在这里使用了场注入来更好地理解。 :) 我在实际代码中使用了构造注入。该项目实际上是一个反应流项目。我在哪里调用使用 WebClient 调用外部服务的方法。用例是这样的,一旦我得到 WebClient 的响应,我需要验证它。如果验证失败,我仍然需要以某种方式返回响应。所以,这就是对 AtomicReference 的引用正在做的事情。很抱歉这个模糊的例子
标签: java spring junit mockito junit5