簡體   English   中英

如何斷言/單元測試服務器JSON響應?

[英]How to assert/unit-test servers JSON response?

我當前的項目使用JSON作為數據交換格式。 在開始集成服務之前,前端和后端團隊都同意JSON結構。 有時由於后端團隊未通知JSON結構的變化; 它打破了前端代碼。

是否有任何外部庫可用於比較模擬JSON(夾具)與服務器JSON響應。 基本上它應該斷言整個JSON對象,並且如果服務器JSON格式中存在任何違規,則應該拋出錯誤。

附加信息:App基於JQuery消費REST JSON服務。

我會為您的JSON對象推薦一個架構。

我使用Kwalify,但如果你更喜歡這種語法,你也可以使用Rx

我最近一直在使用QUnit: http ://docs.jquery.com/QUnit來獲取我的很多JS代碼。

asyncTest http://docs.jquery.com/QUnit/asyncTest可以非常有效地用於測試JSON結構。

例:


asyncTest("Test JSON API 1", 1, function() {
    $.getJSON("http://test.com/json", function(data) {
        equals(data.expected, "what you expected", "Found it");
    });
});

看起來你正試圖從另一端解決問題。 作為前端開發人員,為什么要考慮測試后端開發人員的工作?

在服務器上生成的JSON最好使用標准方法在服務器上進行測試,即xUnit中的功能測試。 如果你想將測試和文檔維基集中在一起 ,你也可以看看像FITnesse這樣的驗收測試框架。

即使在服務器上引入測試之后,你也會得到無效的JSON,這是人類通信中的問題,而不是測試中的問題。

https://github.com/skyscreamer/JSONassert可能有助於消除誤報,因此如果服務器返回的字段順序發生變化,但總體響應相同,則不會觸發失敗。

由於沒有答案我會把我的兩分錢。

如果問題在於您正在處理從后端轉移需求的問題,那么您需要做的就是將自己與這些更改隔離開來。 在前端和后端之間放置一個抽象。

也許您可以將此抽象稱為JSON數據格式交換。

因此,當GUI單元測試(希望你是TDDing你的Web GUI)時,你將有一個模擬JSON DIF。 因此,當將后端與前端*集成時,任何軟件更改都將在抽象層實現中完成。 當然,您已經根據商定的JSON結構對這些進行了測試。

OBTW,我認為服務器端團隊應該負責指定要對服務器使用的協議。

*為什么這讓我想起了我的屁股,你的臉可能是雙胞胎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM