国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在單元測試依賴于真實的配置及網絡的時候增加模擬返回,使用MockRestServiceServer測

yedf / 3231人閱讀

摘要:解決方案使用類來解決,根據官方文檔描述,該類主要用于設計直接或間接使用的測試,通過設置的預期請求,來模擬發送回來的響應,來消除對實際請求的依賴。

問題描述:

在我們當前的項目中我們的在請求微信獲取微信企業號的時候調用微信的接口,當我們在測試的時候,我們所測試的方法所使用的接口也是真實的接口,這是不正確的,因為我們的測試目的是測試一下我們的所寫的代碼是否正確,但當我們的代碼依賴于其他組織的網絡配置時,當其他組織的接口出現問題之后,我們的測試就會報錯,所以為了我們的測試不依賴于外部的接口,我們要在測試的時候模擬接口返回數據。

解決方案

使用MockRestServiceServer類來解決,根據官方文檔描述,該類主要用于設計直接或間接使用RestTemplate的測試,通過設置RestTemplate的預期請求,來模擬發送回來的響應,來消除對實際請求的依賴。

通過代碼來簡單的介紹一下如何使用

要測試的代碼如下,使用RestTemplate來請求第三方的api。

@Autowired
private RestTemplate restTemplate;
....
public void synchronizeData() {
    .....
    logger.debug("調用接口,獲取所有的教師");
    JSONObject jsonObject = restTemplate.getForEntity(url + "...").getBody();
    .....
}
.....

測試代碼如下:

先將restTemplate設置成MockRestServiceServer,然后使用MockRestServiceServer來設置預期請求,和模擬返回,然后我們測試的請求就會按我們模擬的數據進行響應。

MockRestServiceServer mockRestServiceServer = MockRestServiceServer.createServer(restTemplate);

mockRestServiceServer.expect(
                ExpectedCount.once(),
                MockRestRequestMatchers.requestTo(new URI(accessTokenUrl)))
                .andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
                .andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
                        .contentType(MediaType.APPLICATION_JSON_UTF8)
                        .body(jsonObjectTocken.toJSONString()));
      
teacherService.synchronizeData();

官方實例如下:

RestTemplate restTemplate = new RestTemplate()
MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();

server.expect(manyTimes(), requestTo("/hotels/42")).andExpect(method(HttpMethod.GET))
     .andRespond(withSuccess("{ "id" : "42", "name" : "Holiday Inn"}", MediaType.APPLICATION_JSON));

Hotel hotel = restTemplate.getForObject("/hotels/{id}", Hotel.class, 42);
// Use the hotel instance...

// Verify all expectations met
server.verify();

方法介紹:

bindTo(RestTemplate restTemplate).build()
返回一個用于回復指定RestTemplate的生成器。

createServer(RestTemplate restTemplate)
bindTo().build()的快捷生成方式。

expect(ExpectedCount count, RequestMatcher matcher)
RequestMatcher設置指定次數請求。

expect(RequestMatcher matcher)
完成單次http請求。

總結:

在寫的時候錯誤的使用如下實現方式:

@GetMapping("/students/{studentId}/courses")
public List retrieveCoursesForStudent(@PathVariable String studentId) {
    return studentService.retrieveCourses(studentId);
}

Mockito.when(
        studentService.retrieveCourse(Mockito.anyString(),
        Mockito.anyString())).thenReturn(mockCourse);

RequestBuilder requestBuilder = MockMvcRequestBuilders.get(
        "/students/Student1/courses/Course1").accept(
        MediaType.APPLICATION_JSON);

MvcResult result = mockMvc.perform(requestBuilder).andReturn();

導致這么寫怎么改都不理想,到后來請教喜碩,發現喜碩快速的通過google找到了正確的解決方案的相關代碼,反思自己還是能力有欠缺不能思考到問題的關鍵點,而且使用英文goole的能力還有待提高。

參考:

官方介紹

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74502.html

相關文章

  • 隨行付微服務單元

    摘要:輸出結果需要人工檢查的測試不是一個好的單元測試。為了有效的進行單元測試,需要遵循一定的方法,通常采用路徑覆蓋法設計單元測試用例。 在微服務架構下高覆蓋率的單元測試是保障代碼質量的第一道也是最重要的關口,應該持之以恒。 背景 單元測試為代碼質量保駕護航,是提高業務質量的最直接手段,實踐證明,非常多的缺陷完全可以通過單元測試來發現,測試金字塔提出者Martin Fowler 強調如果一個高...

    xiguadada 評論0 收藏0
  • 論性能

    摘要:吞吐量一般結合業務需求而定服務器資源占用占用率內存使用率命中率篇是一種預測系統行為和性能的負載測試工具。負載測試與壓力測試都是性能測試。通過平臺接口可進行合理的性能測試。有利于測試人員及時定位問題。 Part 1:性能測試 性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。 A. 類別 性能測試包括負載測試、壓力測試、基準測試等。 i. 負...

    qpal 評論0 收藏0
  • ??軟件經典10題(含解析) 軟件行業,去大公司還是小公司好???

    年輕人都會犯的3個職場錯誤,你有幾個? 測試人員如何才能快速成長? 軟件測試行業,去大公司還是小公司好? 同學們可以用這 10 道題目,找到自己的薄弱點,對癥下藥哦。 我的建議是:你們可以拿出紙筆,寫下這 10 道題的答案,然后再與文末的答案進行對照~ 選擇題 1. (單選)當需要對某個系統進行測試的時候,應該從哪些方面來設計測試用例? A. 功能驗證 B. 性能相關的驗證 C. 兼容性相關的驗...

    zhunjiee 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<