不考慮子順序測試JSON 物件的等價性
測試從Web 服務傳回的JSON 資料時,必須有一個能夠解析JSON 的函式庫比較兩個JSON 對象,同時忽略子元素的順序。這對於單元測試至關重要,確保 JSON 內容與預期格式匹配,而不依賴特定的子排序。
JSONAssert:有效的解決方案
各種 JSON 庫,Skyscreamer 的 JSONAssert 因其能夠比較 JSON 物件而忽略子順序的能力而脫穎而出。其非嚴格模式有以下優點:
用法範例
要使用JSONAssert,可以寫如下測試方法:
<code class="java">@Test public void testGetFriends() { JSONObject data = getRESTData("/friends/367.json"); String expected = "{friends:[{id:123,name:\"Corby Page\"}" + ",{id:456,name:\"Solomon Duskis\"}]}"; JSONAssert.assertEquals(expected, data, false); }</code>
在此範例中,expectedJSONString 是期望的JSON,actualDataString 是實際的JSON,isStrict 設定為false 以啟用非嚴格模式。
結論
JSONAssert 提供了一個強大的解決方案,用於在忽略子順序的情況下測試 JSON 物件。其非嚴格模式提供了靈活性和準確性,降低了單元測試的脆弱性。
以上是如何測試 JSON 物件忽略子順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!