我有一个只用于测试虚拟api的控制器
@RestController
public class TestController {
@Autowired
private org.springframework.cloud.sleuth.Tracer tracer;
@GetMapping("/trace")
public Mono<String> traceTest() {
...
}
}
这是我的测试
@WebFluxTest(controllers = TestController.class)
public MyTest {
@Autowired
private WebTestClient webClient;
@Test
public void testTrace() {
webClient.get().uri("/trace")...
}
}
当我尝试运行它时,我的跟踪程序不是自动连线的。
当然,如果我把我的测试改成@springboottest,一切都可以
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public MyTest {
...
}
但我希望避免自动连接整个spring应用程序。如何让testcontroller自动配置?
1条答案
按热度按时间f4t66c6m1#
这个
@WebFluxTest
注解仅使用相关bean的子集填充spring testcontext:@webfluxtest自动配置spring-webflux基础结构,并将扫描的bean限制为@controller、@controlleradvice、@jsoncomponent、converter、genericconverter、webfilter和webfluxconfigure。使用@webfluxtest注解时,不扫描常规@component和@configurationproperties bean@enableconfigurationproperties可用于包含@configurationproperties bean。来自spring引导文档
你的
Tracer
不会成为这个开箱即用的testcontext的一部分。为了你的
@WebFluxTest
您可以使用@MockBean
:... 如果你想测试完整的集成,我宁愿使用
@SpringBootTest
.