日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

restful服务端客户端_测试RESTful服务的客户端

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 restful服务端客户端_测试RESTful服务的客户端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

restful服務端客戶端

開發使用RESTful Web API的應用程序可能意味著開發服務器和客戶端。 為服務器端編寫集成測試可以像使用Arquillian啟動服務器一樣容易,并且可以通過REST確保測試服務是否按預期工作。 問題是如何測試客戶端。 在本文中,我們將了解如何使用模擬來測試客戶端。

簡要描述一下,為了測試客戶端,我們需要一個本地服務器,該服務器可以返回記錄的JSON響應。 rest-client-driver是一個模擬RESTful服務的庫。 您可以對測試期間希望接收的HTTP請求設置期望值。 因此,這正是我們Java客戶端所需的。 請注意,當我們開發RESTful Web客戶端以連接到第三方開發的服務(如Flickr Rest API , Jira Rest API , Github …)時,該項目對于編寫測試非常有用。
首先要做的是添加rest-client-driver依賴項:

<dependency><groupId>com.github.rest-driver<groupId><artifactId>rest-client-driver<artifactId><version>1.1.27<version><scope>test<scope><dependency>

下一步,我們將創建一個非常簡單的Jersey應用程序,該應用程序僅對所需的URI調用get方法。

public class GithubClient {private static final int HTTP_STATUS_CODE_OK = 200;private String githubBaseUri;public GithubClient(String githubBaseUri) {this.githubBaseUri = githubBaseUri;}public String invokeGetMethod(String resourceName) {Client client = Client.create();WebResource webResource = client.resource(githubBaseUri+resourceName);ClientResponse response = webResource.type('applicationjson').accept('applicationjson').get(ClientResponse.class);int statusCode = response.getStatus();if(statusCode != HTTP_STATUS_CODE_OK) {throw new IllegalStateException('Error code '+statusCode);}return response.getEntity(String.class);}}

現在我們要測試invokeGetMethod是否確實獲得了所需的資源。 讓我們假設生產代碼中的此方法將負責從github上注冊的項目中獲取所有問題名稱。

現在我們可以開始編寫測試了:

@Rulepublic ClientDriverRule driver = new ClientDriverRule();@Testpublic void issues_from_project_should_be_retrieved() {driver.addExpectation(onRequestTo('reposlordofthejarsnosqlunitissues').withMethod(Method.GET), giveResponse(GET_RESPONSE));GithubClient githubClient = new GithubClient(driver.getBaseUrl());String issues = githubClient.invokeGetMethod('reposlordofthejarsnosqlunitissues');assertThat(issues, is(GET_RESPONSE)); }
  • 我們使用ClientDriverRule @Rule批注將客戶端驅動程序添加到測試中。
  • 然后使用RestClientDriver類提供的方法記錄期望值。
  • 了解我們如何使用driver.getBaseUrl()設置基本URL

使用rest-client-driver,我們還可以使用GiveEmptyResponse方法記錄http狀態響應:

@Test(expected=IllegalStateException.class)public void http_errors_should_throw_an_exception() {driver.addExpectation(onRequestTo('reposlordofthejarsnosqlunitissues').withMethod(Method.GET), giveEmptyResponse().withStatus(401));GithubClient githubClient = new GithubClient(driver.getBaseUrl());githubClient.invokeGetMethod('reposlordofthejarsnosqlunitissues');}

很明顯,我們可以記錄一個推桿動作:

driver.addExpectation(onRequestTo('reposlordofthejarsnosqlunitissues')..withMethod(Method.PUT).withBody(PUT_MESSAGE, 'applicationjson'), giveEmptyResponse().withStatus(204));

請注意,在此示例中,我們設置請求應包含給定的消息正文以響應204狀態碼。
這是一個非常簡單的示例,但請記住,該示例也可用于gson或jackson之類的庫。 rest-driver項目還附帶一個模塊,該模塊可用于斷言服務器響應(如REST保證的項目),但本主題將在另一篇文章中解決。

參考:在One Jar To Rule Them All博客上,從JCG合作伙伴 Alex Soto 測試RESTful服務的客戶端 。


翻譯自: https://www.javacodegeeks.com/2012/09/testing-client-side-of-restful-services.html

restful服務端客戶端

總結

以上是生活随笔為你收集整理的restful服务端客户端_测试RESTful服务的客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。