我有一个rest控制器,我正在尝试对其进行单元测试:
它有一些自动连接的依赖项
@RestController
@RequestMapping("/test")
public class TestController {
private final Dep1 dep1;
private final Dep2 dep2;
private final Dep3 dep3;
public TestController(final Dep1 dep1,
final Dep2 dep2,
final Dep3 dep3) {
this.dep1 = dep1;
this.dep2 = dep2;
this.dep3 = dep3;
}
}
我最近补充道 dep3
```
@Service
public class Dep3 {
private final IValidator validator;
public Dep3(final IValidator validator) {
this.validator= validator;
}
public void validate(final Request req) {
validator.validate(req);
}
}
``` Dep3
有自己的自动连线依赖关系 IValidator
这是我的测试课:
@WebMvcTest(TestController.class)
public class TestControllerTest {
@MockBean
private Dep1 dep1;
@MockBean
private Dep2 dep2;
@MockBean
private Dep3 dep3;
@Autowired
private MockMvc mockMvc;
@Test
public void someTest() throws Exception {
}
@TestConfiguration
static class InnerConfiguration {
@Bean
IValidator validator() {
return new SomeValidator();
}
}
}
对于我的测试,我需要代码来实际运行 dep3.validate(..)
随着实施 SomeValidator()
. 我不确定如何做到这一点。也许我遗漏了一个注解?
2条答案
按热度按时间amrnrhlw1#
别嘲笑我
Dep3
. 而是配置Dep3
豆荚@TestConfiguration
:Spring将完全配置
Dep3
进入TestController
3j86kqsm2#
您必须正确配置mock。像这样:
在实际调用之前,可以在测试方法或设置方法中执行此操作。