我正在尝试在Spring Boot 2中编写一个测试类,其中:
该类如下所示:
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
public class MyControllerTest {
@Autowired
private MockMvc mvc;
@MockBean
private MyRepositoryInterface myRepository;
@Autowired
private MyService myService;
// tests follow ...
}
的(唯一)实现MyService
带有注释,@Service
并允许通过其@Autowired
构造函数注入存储库:
@Service
public class MyActualService implements MyService {
private MyRepository repo;
@Autowired
public MyActualService(MyRepository repo) {
this.repo = repo;
}
// ...
}
NoSuchBeanDefinitionException
在运行测试时,我得到了一个概括的说法,即“不可MyService
用”。
我怀疑我可能需要针对测试的特定配置才能使用该服务,但是我对可用的在线文献完全感到困惑。
有指针吗?
正如jonsharpe所指出的,在查阅了文档之后(一开始我没有正确阅读),我设法解决了一个可行的解决方案:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class MyControllerTest {
@Autowired
private MockMvc mvc;
@MockBean
private MyRepositoryInterface myRepository;
// no need to reference the service explicitly
// ... tests follow
}
上面的代码在加载整个应用程序配置时检索该服务,并且仅按指示对存储库进行模拟。
我可能可以编写临时配置来更好地满足要求,但这已经“开箱即用”了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句