2017-12-12 22 views
1

내 테스트는 현재 테스트중인 메소드에서 변환 된 json 문자열과 일치 할 것으로 예상합니다. 일치를 수행하기 위해 예상되는 문자열을 구성했습니다. 일치하는 json 용 스칼래 트 matchers

val input = Foobar("bar", "foo") 
val body = Foobar("bar !!", "foo!!") 
val responseHeaders = Map[String, String]("Content-Type" -> "application/json") 
val statusCode = "200" 
val responseEvent = ResponseEvent(input, body, responseHeaders, statusCode) 

val expected ="{\"input\":{\"foo\":\"bar\",\"bar\":\"foo\"},\"body\":{\"foo\":\"bar !!\",\"bar\":\"foo!!\"},\"headers\":{\"Content-Type\":\"application/json\"},\"statusCode\":\"200\"}" 

val result = Main.stringifyResponse(responseEvent) 

result should be(expected) 

문자열 일치

는 결과가 json4s 사용하여 라이브러리를 stringifying의 결과로 하나 개의 라인에서만 사용할 수 있기 때문에 여러 줄에 기록 된 모든 문자열 테스트 허용되지 않으며, 매우 민감하고 공백에 실패합니다.

scalatest를 사용하여 완전한 끊김 문자열 비교를 수행하지 않고 json 출력에서 ​​일치를 수행하는 더 좋은 방법이 있습니까?

이 테스트를 만드는 더 좋은 방법이 있습니까?

답변

0

두 가지 옵션이 있습니다.

  1. 재생 Json과 같은 라이브러리를 사용하여 원시 Json String을 JsObject에 넣고 Scalatest를 사용하여 검사를 수행 할 수 있습니다. 이미 JSON 라이브러리를 사용하고 있다면이를 활용할 수 있는지 확인하십시오!

  2. JSON을 사례 클래스에 입력하고 평등을 확인하십시오!