2017-12-12 8 views
1

私のテストでは、現在テスト中のメソッドから変換されたjson文字列と一致すると予想されます。私は試合を行うために予想される文字列を構築しました。jsonにマッチするためのスカラテストマッチャー

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ライブラリを使用して文字列化の結果として一行にしか入手できないので、また、複数行に書き込まれた文字列は、試験のために受け入れられません。

スケートテストを使用して完全な吹き抜けの比較を行うことなく、json出力でマッチングを実行するより良い方法がありますか。

このテストを作成する方が良いでしょうか?

答えて

0

2つのオプションがあります。

  1. 生のJson StringをJsObjectに入れてScalatestを使ってチェックすることができるPlay Jsonのようなライブラリを使用してください。すでにJSONライブラリを使用している場合は、それを活用できるかどうかを確認してください。

  2. JSONをケースクラスに入れて、等価性をチェックしてください!

関連する問題