我目前的项目使用JSON作为数据交换格式。在开始集成服务之前,前端和后端团队都同意采用JSON结构。有时由于后端团队未通知JSON结构发生变化;它打破了前端代码。如何断言/单元测试服务器JSON响应?
是否有任何外部库可用于比较模拟JSON(灯具)和服务器JSON响应。基本上它应该断言整个JSON对象,并且如果在服务器JSON格式中存在任何违规,应该会引发错误。
附加信息:应用程序基于使用REST JSON服务的JQuery。
我目前的项目使用JSON作为数据交换格式。在开始集成服务之前,前端和后端团队都同意采用JSON结构。有时由于后端团队未通知JSON结构发生变化;它打破了前端代码。如何断言/单元测试服务器JSON响应?
是否有任何外部库可用于比较模拟JSON(灯具)和服务器JSON响应。基本上它应该断言整个JSON对象,并且如果在服务器JSON格式中存在任何违规,应该会引发错误。
附加信息:应用程序基于使用REST JSON服务的JQuery。
看起来你试图从另一端解决问题。为什么你应该担任前端开发人员来测试后端开发人员的工作?
在服务器上生成的JSON更适合使用标准方法在服务器上测试,即xUnit中的功能测试。如果您想将测试和文档wiki集于一身,您还可以查看验收测试框架,如FITnesse。
如果即使在服务器上引入测试之后,您也会得到无效的JSON,这是人类通信中的问题,而不是测试中的问题。
我不同意。即使后端在单元测试他们自己的代码时应该做的更好,但是有很多次,这有助于确保您正在接收您期望的数据类型。通过快速检查传入的JSON,您可以通过正确地将问题确定为前端或后端来显着缩短调试时间 – Hortitude 2011-09-07 21:14:22
我一直在使用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数据格式交换。因此,当GUI单元测试(希望你是TDD你的Web GUI)时,你将有一个模拟JSON DIF。所以当将后端与前端*集成的时候,任何软件更改都将在抽象层实现中完成。当然,您已经基于商定的JSON结构进行了测试。
OBTW,我认为服务器端团队应该负责指定针对服务器使用的协议。
*这为什么提醒我这个笑话我的屁股和你的脸可能是双胞胎。
https://github.com/skyscreamer/JSONassert可能有助于消除误报,以便如果服务器返回的字段顺序发生变化,但整体响应相同,则不会触发失败。
虽然为JSON声明模式很有趣。这是我关于夹具方法的想法;它既可用于测试后端服务的完整性,也可用于脱机或预集成UI开发。 – shazmoh 2010-03-24 03:46:29
不要混合这些东西。使用模式来确保您都了解数据合同。使用后端的固件来做单元测试。混合它们会让你更新太多东西,并会使你的生活复杂化。 – 2010-03-24 03:58:53