Mock基本介紹
mock就是對于某些不容易構造或者不容易擷取的對象,用一個虛拟的對象來建立的方法。項目開發和測試過程中,遇到以下的情況時,就需要模拟結果傳回。
1. 當另一方接口或服務還未完成,阻礙項目進度時,可以通過mock的方式,實作并行開發。
2. 另一方接口不穩定,而這邊需要一個穩定的結果才能繼續往下走流程時,也可以使用mock。有時候自動化測需要一個持續穩定的環境,也可以對不是很重要的服務進行mock處理。
3. 需要模拟異常情況,但是這種異常不容易觸發時,可以使用mock實作。
Moco架構基本介紹
Moco的原理是應用于stub開發的,也就是樁代碼(大概了解的意思就是用來代替某些代碼的代碼,這個不做深入的研究)。
Moco原理簡介:Moco會根據一些配置,啟動一個真正的HTTP服務(會監聽本地的某個端口)。當發起請求滿足一個條件時,它就給回複一個應答。Moco的底層沒有依賴于像Servlet這樣的重型架構,而是基于一個叫Netty網絡應用架構直接編寫的,這樣一來,繞過了複雜的應用伺服器,速度會很快
Moco架構的基本使用
moco架構是github上的一個開源項目,可以把這個項目源碼拿下來使用 gradle編譯為一個jar,也可以網上直接找 jar 包下載下傳。 位址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/ 可以自己找一個版本下載下傳
也可以使用Maven導入jar包
<!-- https://mvnrepository.com/artifact/com.github.dreamhead/moco-runner -->
<dependency>
<groupId>com.github.dreamhead</groupId>
<artifactId>moco-runner</artifactId>
<version>1.1.0</version>
</dependency>
如果是直接導入jar包的話啟動mock指令如下:
java -jar ./moco-runner-0.10.0-standalone.jar http -p 8080 -c api.json
采用maven導入的包啟動mock如下
import com.github.dreamhead.moco.bootstrap.Bootstrap;
public class test {
//http -p 8080 -c api.json
public static void main(String[] args) {
(new Bootstrap()).run(new String[]{"http","-p","8080","-c","H:\\work\\TestNG_Maven\\src\\Mock/api.json"});
}
}
兩種方式都可以啟動Mock然後通過浏覽器直接通路我們的接口