Мой текущий проект использует JSON в качестве формата обмена данными. Обе команды Фронтенда и Бэкенда согласуют структуру JSON, прежде чем начнут интегрировать сервис. Время от времени из-за неуведомленных изменений в структуре JSON командой бэкенда; это взламывает код фронтенда.
Есть ли любая внешняя библиотека, которой мы могли пользоваться для сравнения ложного JSON (приспособление) с серверами ответ JSON. В основном это должно утверждать целый объект JSON и должно бросить ошибку, если существует какое-либо нарушение в серверах формат JSON.
Дополнительная информация: Приложение основано на JQuery, использующем REST сервисы JSON.
Я бы порекомендовал схему для ваших объектов JSON.
Я использую Kwalify , но вы также можете использовать Rx , если вам больше нравится этот синтаксис.
Похоже, вы пытаетесь решить проблему с другого конца. Почему вы, как интерфейсный разработчик, должны беспокоиться о тестировании работы внутреннего разработчика?
JSON, созданный на сервере, лучше тестировать на сервере, используя стандартный подход, то есть функциональные тесты в xUnit. Вы также можете посмотреть на фреймворки приемочного тестирования, такие как FITnesse , если хотите, чтобы тесты и вики-документация были в одном месте.
Если даже после введения тестирования на сервере вы получите недопустимый JSON, это проблема человеческого общения, а не тестов.
Я использовал QUnit: http://docs.jquery.com/QUnit в последнее время для большого количества моего JS кода.
asyncTest http://docs.jquery.com/QUnit/asyncTest может быть использован довольно эффективно для тестирования структуры JSON.
Example:
asyncTest("Test JSON API 1", 1, function() {
$.getJSON("http://test.com/json", function(data) {
equals(data.expected, "what you expected", "Found it");
});
});
Поскольку ответа нет, я вставлю свои два цента.
Если проблема в том, что вы имеете дело с изменением требований из серверной части, то вам нужно сделать следующее: изолируйте себя от этих изменений. Поместите абстракцию между интерфейсом и сервером.
Возможно, вы можете назвать эту абстракцию обменом форматов данных JSON.
Итак, при модульном тестировании графического интерфейса пользователя (надеюсь, вы выполняете TDD-тестирование своего веб-интерфейса) у вас будет имитация JSON DIF. Итак, когда придет время интегрировать серверную часть с клиентской частью * , любые изменения программного обеспечения будут внесены в реализацию уровня абстракции. И, конечно же, у вас уже есть тесты, основанные на согласованной структуре JSON.
OBTW, я думаю, что серверная команда должна нести ответственность за определение протокола, который будет использоваться против сервера.
* Почему это напоминает анекдот: моя задница и твое лицо могут быть близнецами.