簡體   English   中英

彈簧集成測試和設置字段到控制器

[英]Spring integration test & set field to controller

我正在嘗試創建我的第一個集成測試,從jhipster項目中獲得啟發。

在我的設置中,我使用這種代碼:

    CampaignController campaignController = new CampaignController();
    ReflectionTestUtils.setField(campaignController, "securityService", securityService);
    ReflectionTestUtils.setField(campaignController, "campaignService", campaignService);
    ReflectionTestUtils.setField(campaignController, "messageService", messageService);

    MockMvc restMvcCampaignController = MockMvcBuilders.standaloneSetup(campaignController).setMessageConverters(TestUtil.getCustomJsonMessageConverter()).build();
    RestAssuredMockMvc.mockMvc(restMvcCampaignController);

服務是自動裝配的類。 我想知道“ ReflectionTestUtils.setField”是否是一種好的做法,或者還有什么我可以使用的更好的方法?

謝謝

這不是一個好習慣。 除了使無法設置依賴項(而不是通過反射)之外,還可以通過構造函數注入依賴項。 例如

@Controller
public class Controller {
    private CampaignService campaignService;

    @Autowired
    public Controller(CampaignService campaignService, MessageService messageService) {
         //bind fields
    }
}

現在,您可以輕松地從測試中實例化控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM