1. 程式人生 > >利用eolinker實現api介面mock測試(mock server)

利用eolinker實現api介面mock測試(mock server)

前後端分離或者是進行單元測試的時候,必須要用mock api替換掉第三方呼叫或者是實際的API,eolinker提供了非常全面的mock api支援,其他那些需要安裝配置的mock server就不說了,有現成的幹嘛還要自己搭。

Api資訊如下,url裡面可以把根路徑去掉,直接寫api的地址就行。到時候在專案裡面統一配置線上環境以及測試環境的地址字首,切換就好。

 

在api的編輯頁面,高階mock裡面,輸入mock的規則就行。eolinker的mock是基於mockjs來改的,不過規則大同小異,規則可以參考這裡http://mockjs.com/examples.html


編輯完成之後,回到api的詳情頁面,在mock的標籤下面會看到有一個url,複製到專案裡面就行。因為地址字首是統一的,所以可以按照剛剛說的,在專案裡統一配置一個測試的字首,到時候上線就換成生產環境的字首既可。支援restful這點還是非常不錯的,似乎是我目前看到唯一支援restful的mock server?


用到專案裡面大概是這樣的(只是簡單寫了個demo):

public class MockServerTest {
    @Test
    public void testMockServer() throws IOException {
        mockClient.when(
                request()
                        .withPath("http://mock.eolinker.com/TPivSvI55cabdf9f2243a023dc6a76ec9514dc38084c19d?uri=/bestedu/course/primarySchool")
                        .withMethod("POST")
//                        .withHeader(new Header(HttpHeaders.ACCEPT, MediaType.TEXT_PLAIN))
//                        .withQueryStringParameter(new Parameter("my-token", "12345"))
        ).respond(
                response()
                        .withStatusCode(200)
                        .withBody(expected)
        );
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet httpGet = new HttpPost("http://mock.eolinker.com/TPivSvI55cabdf9f2243a023dc6a76ec9514dc38084c19d?uri=/bestedu/course/primarySchool");
        CloseableHttpResponse response = client.execute(httpGet);
        //驗證輸出是否是正確
        InputStream content = response.getEntity().getContent();
        InputStreamReader inputStreamReader = new InputStreamReader(content);
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String responseText = bufferedReader.readLine();
        assertThat(responseText, equalTo(expected));
    }
}

除了返回mock資料之外,eolinker還有對請求方式以及引數的校驗,如果不對的話還會提示,這個還是很cool的。but,對於mock的校驗只有企業版才有,默默希望到時候技術老大可以批一下。。。

總結:

不重複造輪子,現在很多人崇尚自己去搞一套服務啊啥的,研究一下還行,真的幹活還是簡單粗暴到手即用最好。何況現在也在推崇遠端辦公,eolinker在這一塊我覺得做的還是ok的。