1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        集成測試時(shí) MockMvc 無法注入

        共 1575字,需瀏覽 4分鐘

         ·

        2022-06-19 12:59


        如果閱讀過 使用 Junit 編寫單元測試[1] 的小伙伴都知道,在寫對 Controller 進(jìn)行單元測試時(shí),會將 Service 層進(jìn)行 Mock。

        大概樣子如下:

        但是除了單元測試,還需要寫集成測試,就是模擬全流程的請求。

        集成測試同樣使用的是 MockMvc,但是如果像單元測試一樣加上 @WebMvcTest 就不太可以,因?yàn)?Service 代碼沒有 mock 掉,就會報(bào)錯(cuò)。

        可以用以下兩種方式解決該問題:

        方法一

        移除 @Autowired 注解,并手動聲明 MockMvc。

        在 @Before 中使用 MockMvcBuilders.webAppContextSetup 即可手動聲明 MockMvc。

        @WebAppConfiguration
        @RunWith(SpringRunner.class)
        @SpringBootTest
        public class UserInfoControllerTest 
        {

            @Autowired
            private WebApplicationContext webApplicationContext;
            
            private MockMvc mockMvc;
            
            @Before
            public void setUp() {
                mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
            }
            
            // ... 省略
        }

        方法二

        使用 @AutoConfigureMockMvc 注解,這樣就可以使用 @Autowired 即可注入 MockMvc 對象。

        @WebAppConfiguration
        @AutoConfigureMockMvc(addFilters = false)
        @RunWith(SpringRunner.class)
        @SpringBootTest
        public class AccessRecordControllerTest 
        {

            @Autowired
            private MockMvc mockMvc;

            // ... 省略
        }

        注意:

        需要添加 addFilters = false 否則可能會導(dǎo)致走 AntBuservice 過濾器,導(dǎo)致需要登錄,從而集成測試失敗

        近期在開發(fā)中寫單元測試比較多,并且在寫單元測試時(shí)也遇到不少問題,以及總結(jié)了一些心得,后續(xù)會總結(jié)相關(guān)文章。

        引用鏈接:

        [1]

        使用 Junit 編寫單元測試: https://mp.weixin.qq.com/s/HUhWUk01ICZ5ppwHhcc8ZA


        - <End /> -


        瀏覽 74
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            嫩草伊人久久精品少妇av杨幂 | 老外几下就让我高潮了 | 78m国产成人精品视频 | 欧美中文日韩 | 牛牛精品一区二区AV | 国产高清毛片视频 | 美女和男人操逼视频 | 久久久国产视频 | 人善交video另类hd侏儒 | 国产va精品 |