我当前的项目使用JSON作为数据交换格式。在开始集成服务之前,前端和后端团队都同意JSON结构。有时由于后端团队未通知JSON结构的变化;它打破了前端代码。
是否有任何外部库可用于比较模拟JSON(夹具)和服务器JSON响应。基本上它应该断言整个JSON对象,并且如果服务器JSON格式中存在任何违规,则应该抛出错误。
其他信息:App构建于使用REST JSON服务的JQuery上。
答案 0 :(得分:6)
答案 1 :(得分:5)
我最近一直在使用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");
});
});
答案 2 :(得分:3)
看起来你正试图从另一端解决问题。作为前端开发人员,为什么要考虑测试后端开发人员的工作?
在服务器上生成的JSON最好使用标准方法在服务器上进行测试,即xUnit中的功能测试。如果您想将测试和文档维基集中在一起,您还可以查看FITnesse之类的验收测试框架。
如果即使在服务器上引入测试后,你也会得到无效的JSON,这是人类沟通中的一个问题,而不是在测试中。
答案 3 :(得分:0)
由于没有答案我会把我的两分钱放进去。
如果问题在于您正在处理从后端转移需求的问题,那么您需要做的就是将自己与这些更改隔离开来。在前端和后端之间放置一个抽象。
也许您可以将此抽象称为JSON数据格式交换。
因此,当GUI单元测试(希望您是TDDing Web GUI)时,您将获得JSON DIF的模拟。因此,当将后端与前端* 集成时,任何软件更改都将在抽象层实现中完成。当然,您已经根据商定的JSON结构对这些进行了测试。
OBTW,我认为服务器端团队应该负责指定要对服务器使用的协议。
*为什么这会引起我的屁股的笑话,你的脸可能是双胞胎。
答案 4 :(得分:0)
https://github.com/skyscreamer/JSONassert可能有助于消除误报,因此如果服务器返回的字段顺序发生变化,但总体响应相同,则不会触发失败。