我使用JSON料器JSON輸出由Web服務如下比較比較Web服務JSON響應,加特林: - 使用jsonFileFeeder
val jsonFileFeeder = jsonFile("test_data.json")
val strategy = (value: Option[String], session: Session) => value.map { jsonFileFeeder =>
val result = JSONCompare.compareJSON("expectedStr", "actualStr", JSONCompareMode.STRICT)
if (result.failed) Failure(result.getMessage)
else Success(value)
}.getOrElse(Failure("Missing body"))
val login = exec(http("Login")
.get("/login"))
.pause(1)
.feed(feeder)
.exec(http("authorization")
.post("/auth")
.headers(headers_10)
.queryParam("""email""", "${email}")
.queryParam("""password""", "${password}")
.check(status.is(200))
.check(bodyString.matchWith(strategy)))
.pause(1)
但它拋出錯誤
value matchWith is not a member of io.gatling.core.check.DefaultFindChe
ckBuilder[io.gatling.http.check.HttpCheck,io.gatling.http.response.Response,String,String]
15:10:01.963 [ERROR] i.g.a.ZincCompiler$ - .check(bodyString.matchWith(jsonFileFeeder)))
s\lib\Login.scala:18: not found: value JSONCompare
15:10:05.224 [ERROR] i.g.a.ZincCompiler$ - val result = JSONCompare.compareJSON(jsonFileFeeder, j
sonFileFeeder, JSONCompareMode.STRICT)
^
15:10:05.631 [ERROR] i.g.a.ZincCompiler$ - two errors found
Compilation failed
這個錯誤似乎表明'matchWith'函數和'JSONCompare'對象不存在 - 這是真的,在Gatling中沒有這樣的代碼(我猜'JSONCompare'來自JSONAssert,不確定'matchWith' )。雖然可能修復此代碼,但是您是否考慮過使用jsonPath,我懷疑這會證明更容易,更靈活? – 2014-09-10 13:25:04
@James_pic: - 請問您可以添加一些snipet代碼,我如何使用JSONFeeder來比較Web服務JSON響應? – 2014-09-10 13:34:06
JSON響應有多大?另外,重要的是它完全匹配,還是僅僅檢查返回的JSON的一個或兩個元素會令人滿意? – 2014-09-10 13:45:21