中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做一網(wǎng)站要什么品牌運營推廣方案

做一網(wǎng)站要什么,品牌運營推廣方案,wordpress大前端下載,wordpress做淘寶客可以加入api文章目錄 基礎(chǔ)基礎(chǔ)概念Mockxxx一般實現(xiàn)文件位置 實戰(zhàn)MockMvc與Test注解不兼容RequestParams參數(shù)RequestBody參數(shù) 基礎(chǔ) 基礎(chǔ)概念 定義:是Spring框架提供的一種用于測試Spring MVC控制器的工具,它允許開發(fā)者在不啟動完整的web服務(wù)器的情況下,…

文章目錄

  • 基礎(chǔ)
    • 基礎(chǔ)概念
    • Mockxxx
    • 一般實現(xiàn)
    • 文件位置
  • 實戰(zhàn)
    • MockMvc與Test注解不兼容
    • @RequestParams參數(shù)
    • @RequestBody參數(shù)

基礎(chǔ)

基礎(chǔ)概念

定義:是Spring框架提供的一種用于測試Spring MVC控制器的工具,它允許開發(fā)者在不啟動完整的web服務(wù)器的情況下,模擬HTTP請求并驗證響應(yīng)。優(yōu)點:執(zhí)行速度快 --》 不需要啟動web服務(wù)器;便于集成 --》 可以與Junit、TestNG等測試框架無縫銜接;強大的功能 --》  對HTTP請求的詳細配置和響應(yīng)的全面驗證;依賴配置:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

Mockxxx

MockMvc:來自于:import org.springframework.test.web.servlet.MockMvc;定義:是Spring Test模塊的一部分,它允許開發(fā)者對Spring MVC控制器進行單元測試而無需啟動完整的Web服務(wù)器;通過MockMvc,可以模擬HTTP請求并驗證響應(yīng),使得測試執(zhí)行速度更快,同時便于與JUnitTestNG等測試框架集成。使用:使用mockMvc。perform()模擬HTTP請求,使用.andExpect().andReturn()等方法進行響應(yīng)驗證。
Mockito:來自于:import org.mockito.Mockito;定義:流行的Java單元測試框架,專門用于創(chuàng)建和驗證模擬對象的行為。它允許開發(fā)者在編寫測試時模擬外部依賴,從而使得測試更便捷,減少對外部類、系統(tǒng)和依賴給單元測試帶來的耦合。特點:行為驗證、測試樁、參數(shù)匹配器、注冊支持、監(jiān)控真實對象、重置mock對象;
MvcResult:來自于:import org.springframework.test.web.servlet.MvcResult;定義:是在執(zhí)行模擬HTTP請求以測試控制器(Controller)層功能時的重要概念,它代表一個完整的HTTP響應(yīng)結(jié)果,包括響應(yīng)的狀態(tài)碼、頭信息、響應(yīng)體以及任何可能產(chǎn)生的錯誤等。作用:封裝HTTP響應(yīng) -》封裝由模擬的HTTP產(chǎn)生的完整響應(yīng)信息;獲取響應(yīng)細節(jié) -》包括響應(yīng)的狀態(tài)碼、頭信息、響應(yīng)體等內(nèi)容;斷言測試 -》 使用MvcResult中的方法進行斷言,確??刂破鞣祷卣_的HTTP狀態(tài)碼和數(shù)據(jù);

一般實現(xiàn)

// 類注解,用于配置 JUnit 5 測試類以使用 Spring 的測試支持。
@ExtendWith(SpringExtension.class)// 是一個 Spring Boot 提供的注解,用于對 Web 層(即控制器層)進行測試。如果使用該注解,那么Spring Boot 會自動配置一個模擬的 Spring MVC 環(huán)境,這樣就可以在不啟動完整應(yīng)用的情況下測試控制器的行為。
@WebMvcTest(value = {Controller.class, Handler.class})// 完成bean自動裝配
@Autowired
private MockMvc mockMvc;// 標(biāo)識測試方法
@Test
MockHttpServletRequestBuilder requestBuilder = get("控制類路徑/xxx/xxx");
// MockHttpServletRequestBuilder 是一個用于構(gòu)建模擬HTTP請求的工具類。
// 主要在單元測試和集成測試中使用,構(gòu)造出特定的HTTP請求來測試控制器(Controller)或端點(Endpoint)。
requestBuilder.param("參數(shù)名", 參數(shù)值);
// 給已創(chuàng)建的mockhttpservletrequestbuilder實例添加查詢參數(shù); 
// 將參數(shù)通過鍵值對的形式填入MockHttpServletRequestBuilder對象中;mockMvc.perform(requestBuilder) // mockMvc對象執(zhí)行,之前定義的requestbuiler對象.andExpect(status().isOk()) // 該調(diào)用方式是鏈?zhǔn)秸{(diào)用;--》 用于檢查HTTP響應(yīng)的狀態(tài)碼是否是200.andDo(new ResultHandler() { // 自定義處理MvcResult對象,即模擬請求后的結(jié)果@Overridepublic void handle(MvcResult mvcResult) throws Exception {// 獲取響應(yīng)體并將其轉(zhuǎn)化為字符串類型;String content = mvcResult.getResponse().getContentAsString();// 檢查響應(yīng)體是否為空,以確保有數(shù)據(jù)返回;assertTrue(StringUtils.isNotBlank(content));// 將響應(yīng)體內(nèi)容解析成map集合Map<String, String> resp = JSONUtils.toMap(content);// 驗證code/message 兩個屬性的值是否等于1/success;assertEquals("1", resp.get("code"));assertEquals("success", resp.get("message"));// 獲取data屬性對應(yīng)的值String data = resp.get("data");// base64解碼byte[] encryptedData = Base64.decode(data);// aes密鑰生成AES aes = genAES(keyIv);// 解密data對應(yīng)的值String json = new String(aes.decrypt(encryptedData), StandardCharsets.UTF_8);// json format is ResponseKeyCollection 自定義的一個類ResponseKeyCollection collection = JSONUtils.toObject(json, ResponseKeyCollection.class);// 將json轉(zhuǎn)成 ResponseKeyCollection對象assertEquals(10, collection.getResponseKeys().size());// 驗證對象中g(shù)etResponseKeys方法返回的集合大小是否為10}});@BeforeEach
ResponseKey responseKey1 = COLLECTION.getResponseKeys().stream().filter(key -> key.getIndex() == 1).findFirst().orElse(null);
// COLLECTION獲取ResponseKeys屬性--》轉(zhuǎn)換為流--》過濾出index=1的responseKey對象
// --》查找第一個滿足條件的--》有則返回,無則返回null;
// COLLECTION 是自定義的對象
Mockito.when(keyStoreService.getResponseKey(1)).thenReturn(responseKey1);
// 模擬該方法,當(dāng)此入?yún)?時,則返回上述找到的對象;
Mockito.when(keyStoreService.generateResponseKeyCollection(10)).thenReturn(COLLECTION);
// 模擬該方法,當(dāng)此入?yún)?0時,則返回Collecion對象;
Mockito.when(keyHelper.isExpiredKeyIndex(anyInt())).thenReturn(false);
// 模擬此方法,不管該方法入?yún)檎l,都返回false --》 即keyIndex永不過期

文件位置

與項目目錄保持一致;
假設(shè)項目文件為src/main/java/xxx/controller/xxxController
測試類項目文件為src/test/java/xxx/controller/xxxTest

實戰(zhàn)

MockMvc與Test注解不兼容

參考博客:https://segmentfault.com/q/1010000042943340

描述:使用    @Autowiredprivate MockMvc mockMvc;總是導(dǎo)致注入的mockMvc失敗;
原因是:MockMvc@Test不兼容的問題;原本依賴庫為:org.junit.Test 改成org.junit.jupiter.api.Test 就可以了;兩個依賴庫之間的關(guān)系為:org.junit.Test --JUnit4 org.junit.jupiter.api.Test --JUnit5

@RequestParams參數(shù)

MockHttpServletRequestBuilder requestBuilder = get("/decrypt");
requestBuilder.param("id1", id1);
requestBuilder.param("id2", id2);
mockMvc.perform(requestBuilder).andExpect(status().isOk()).andDo(mvcResult -> {String content = mvcResult.getResponse().getContentAsString();
});

@RequestBody參數(shù)

接口請求參數(shù):
@RequestMapping("/getfunction1")
public ResultDtoRisk riskGetTokenByph(HttpServletRequest request, @RequestBody NumReq numReq){}測試代碼:
@Autowired
pivate MockMvc mockMvc;
// import org.springframework.test.web.servlet.MockMvc;NumReq numReq = new NumReq();
numReq.setId1(id1);
numReq.setId2(id2);MockHttpServletRequestBuilder requestBuilder = get("/getfunction1");
// import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
String requestBodyContent = objectMapper.writeValueAsString(numReq);requestBuilder.contentType(MediaType.APPLICATION_JSON_VALUE).content(requestBodyContent);mockMvc.perform(requestBuilder).andExpect(status().isOk()).andDo(print());
http://www.risenshineclean.com/news/5346.html

相關(guān)文章:

  • 網(wǎng)站縮放代碼無安全警告的瀏覽器
  • 萊蕪網(wǎng)站優(yōu)化平臺軟文廣告案例500字
  • 網(wǎng)站后臺統(tǒng)計代碼網(wǎng)站怎么seo關(guān)鍵詞排名優(yōu)化推廣
  • 勻貴網(wǎng)站建設(shè)seo自媒體運營技巧
  • 游戲開發(fā)比網(wǎng)站開發(fā)強強seo博客
  • 建設(shè)互聯(lián)網(wǎng)站機房需要哪些設(shè)備外包網(wǎng)絡(luò)推廣營銷
  • 新問網(wǎng)站設(shè)計發(fā)外鏈軟件
  • 不需要備案如何做網(wǎng)站汽車軟文廣告
  • 阿里云云主機做網(wǎng)站簡述網(wǎng)絡(luò)營銷的特點
  • 蘋果官網(wǎng)入口河南網(wǎng)站關(guān)鍵詞優(yōu)化代理
  • 惠州公司做網(wǎng)站營銷模式和營銷策略
  • 廣州網(wǎng)站開發(fā)哪家強泉州百度首頁優(yōu)化
  • 網(wǎng)頁開發(fā)的流程青島百度seo
  • 自己做的網(wǎng)站二維碼怎么做的中國百強縣市榜單
  • 建網(wǎng)站空間互聯(lián)網(wǎng)推廣方案
  • dw做的網(wǎng)站seo的最終是為了達到
  • 購物網(wǎng)站建設(shè)規(guī)劃書seo網(wǎng)站診斷分析報告
  • 網(wǎng)站制作好以后怎么管理網(wǎng)站外鏈?zhǔn)鞘裁匆馑?/a>
  • 青島快速網(wǎng)站排名小程序商城制作一個需要多少錢
  • 漣源網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣加盟
  • 煙臺優(yōu)化網(wǎng)站建設(shè)長沙seo招聘
  • wordpress關(guān)閉自動更新seo診斷分析在線工具
  • 外貿(mào)網(wǎng)站建設(shè)公司流程推廣產(chǎn)品的軟文
  • php動態(tài)網(wǎng)站開發(fā)唐四薪課后答案長春網(wǎng)站制作推廣
  • 深圳企業(yè)網(wǎng)站建設(shè)服務(wù)平臺中國有幾個搜索引擎
  • 個人網(wǎng)頁可以做什么內(nèi)容seo網(wǎng)站優(yōu)化方案書
  • 紹興h5建站我想注冊一個網(wǎng)站怎么注冊
  • 無經(jīng)驗做網(wǎng)站今日軍事新聞最新消息新聞
  • java環(huán)境網(wǎng)站整站建設(shè)要怎么網(wǎng)絡(luò)做推廣
  • 專業(yè)的建網(wǎng)站的公司廣州seo網(wǎng)站推廣公司