0
我們正在將Apache CXF資源遷移到Spring MVC。它發生了,我們更好地將資源遷移到服務,併爲所有人提供一個大的控制器。在這裏我們收到:將MockBean移到單獨的配置對象中
@Component
public class MainResource {
...
@Path("/first")
public FirstResource getFirstResource() {
...
@Path("/second")
public SecondResource getSecondResource() {
@Component
public class FirstResource {
@GET
@Path("/")
public FirstEntity getFirstEntity() {
@Component
public class SecondResource {
@GET
@Path("/")
public SecondEntity getSecondEntity() {
在這裏,我們現在有:
@Controller
public class MainController {
@Resource
FirstService firstService;
@Resource
SecondService secondService;
...
@GetMapping(/first)
public FirstEntity getFirst() {
...
@GetMapping(/second)
public SecondEntity getSecond() {
但是,當它來測試控制器的以下問題出現了:我們要在每一個分割每個服務測試,以便測試我們必須爲每個服務使用@MockBean
(否則它無法啓動應用程序上下文)。所以這裏是問題:
@RunWith(SpringRunner.class)
@WebMvcTest(MainController.class)
public class FirstWebMvcTest {
@MockBean
FirstService firstService;
@MockBean
SecondService secondService;
// testing /first call only. secondService is not used
@RunWith(SpringRunner.class)
@WebMvcTest(MainController.class)
public class SecondWebMvcTest {
@MockBean
FirstService firstService;
@MockBean
SecondService secondService;
// testing /second call only. firstService is not used
我們不想複製@MockBean
。作爲一個臨時解決方案,我已經把他們全部都轉到了基礎類。但我不喜歡擴展基礎測試類來獲得這個定義,在我看來,這似乎是一個骯髒的解決方案。理想情況下,我想將它移動到某個配置或其他位置。
感謝您的任何建議!
嗯,但它不會在測試中注入模擬.. –