spring-boot - Spring boot 2.0.5.RELEASE - sleuth 和 mockito
问题描述
我试图解决这个问题一个星期,但没有运气。问题在于单元测试。
这是我要测试的课程:
import brave.Span;
import brave.Tracer;
@Service
public class InternetBackEndRestClient {
@Autowired
private Tracer tracer;
public PasswordJwtResponse generatePassworJwt(PasswordJwtRequest passwordJwtRequest, String traceId) throws LogonProxyException {
log.info("{\"Starting method\": \"generatePassworJwt\", \"input\": {} }", passwordJwtRequest);
Span newSpan = tracer.nextSpan().name("spanPasswordJwtResponse");
...
}
}
如何进行单元测试?Brave.Tracer 是最后一堂课,所以我不能嘲笑它。无论如何要设置上下文吗?还是模拟示踪剂?
@RunWith(MockitoJUnitRunner.class)
public class InternetBackEndRestClientTest {
@InjectMocks
private InternetBackEndRestClient internetBackEndRestClient;
@Mock
private Tracer tracer;
@Test
public void generatePassworJwt_test() {
internetBackEndRestClient.generatePassworJwt(...);
....
}
}
有人可以帮我吗?
解决方案
这是对我有用的解决方案:
@RunWith(MockitoJUnitRunner.class)
public class InternetBackEndRestClientTest {
private static final String TRACEID = "12345678901234567890123456789012";
@InjectMocks
private InternetBackEndRestClient internetBackEndRestClient;
@Mock
private Tracer tracer;
@Mock
private Span span;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(tracer.nextSpan()).thenReturn(span);
when(tracer.nextSpan().name("spanPasswordJwtResponse"))
.thenReturn(span);
when(span.start()).thenReturn(span);
Tracing tracing = Tracing.newBuilder().build();
doReturn(tracing.tracer().withSpanInScope(span))
.when(tracer).withSpanInScope(span);
doNothing().when(span).finish();
...
}
...
}
推荐阅读
- python - 无法调试 Python 正则表达式
- python - 将 tensorflow 模型转换为 tensorflow lite (.h5 到 .tflite) 时出错 = ValueError: bad marshal data (unknown type code)
- ios - 编译器花费太多时间在 SwiftIU 中构建
- apache-kafka - 为什么无法在 Kafka Connect 中使用 JDBC Sink Connector 删除记录
- php - 隐藏价格显示后缀的代码停止工作 - WooCommerce
- python - 我可以创建特定目录的文件系统对象吗?
- android - 如何在 Android Studio 3.6 中的方法自动完成后将光标保持在括号内?
- php - Laravel eloquent 按关系模型上的角色名称排序
- node.js - 如何使用 ts-node-dev 和正确的行号在 Visual Studio Code 中调试 Typescript 代码
- python - 如何使用 python 从复杂的非线性系统中获取所有根(复杂和实数)?