JSON で応答を返す Grails のコントローラーがあります。
私は大まかにこのように動作するテストを書きました
test(){
def expectedResponse=JSON.parse('[{"username":"user","startDate":"2010-11-30"}]')
...
def actualResponse=JSON.parse(response.text)
println "Expecting: ${expectedResponse.toString()}"
println "Actual: ${actualResponse.toString()}"
assertEquals(expectedResponse.toString(), actualResponse.toString())
...
}
これは期待どおりに機能します
Expecting: [{"username":"user","startDate":"2010-11-30"}]
Actual: [{"username":"user","startDate":"2010-11-30"}]
ただし、文字列比較に頼らずにこれを行うためのより良い方法があるかどうか疑問に思っていました.おそらく、テストケースを無効にすることなく、応答に属性を追加できる柔軟性を残してくれるものでしょうか?
これを自分で作成することもできますが、何らかの種類の JSON 比較が言語に組み込まれることを期待していました。
更新:toStringなしでこれを直接実行しようとしましたが、一貫性のない結果が得られました.理由はよくわかりません.ある段階で機能していたのに、突然これを取得しました. 違いの原因となるコードの変更が見られない
groovy.lang.MissingMethodException: No signature of method: com.siggysale.MainControllerTests.assertEquals() is applicable for argument types: (org.codehaus.groovy.grails.web.json.JSONArray, org.codehaus.groovy.grails.web.json.JSONArray) values: [[], []]