JS-библиотека, чтобы проверить, возвращено ли дополнительное поле данных в HTTP-ответе?

1

В настоящее время я работаю над созданием сквозного тестирования для API, над которым работает другая команда, и мне было интересно, если кто-нибудь знает о библиотеке JS, которую я мог бы использовать, чтобы проверить, возвращается ли дополнительное поле в теле ответа HTTP? Целью этой функциональности будет информирование команды QA, когда команда разработчиков вносит изменения в API с помощью тестов, вместо того, чтобы разработчики вручную сообщали нам, что они создали обновления. Я знаю, что это можно реализовать вручную, но если колесо уже существует, я бы предпочел не создавать его заново.

Пример сценария:

Вызов API: GET user - возвращает: имя пользователя, идентификатор пользователя и день рождения пользователя.

С предложенной функциональностью, если команда разработчиков произвела обновления для вызова пользователя Get, и она возвращает следующее - return: имя пользователя, идентификатор пользователя, день рождения пользователя и адрес пользователя.

Тест не дал бы мне знать, что дополнительное поле, которое не ожидалось (адрес пользователя), было возвращено.

  • 0
    Вы можете использовать веб-API Fetch ? В нем должно быть все необходимое для этого, если возможно :)
  • 0
    Хотя это относительно интересный вопрос, он не относится к теме переполнения стека (мы не делаем рекомендации по покупкам); Это может быть хорошо подходит для Программных Рекомендаций , но сначала проверьте их страницы часто задаваемых вопросов / справки.
Теги:
testing
http

2 ответа

1
Лучший ответ

Проверка схемы, кажется, то, что вы ищете. Помимо библиотеки, упомянутой в другом ответе, вы также можете проверить аналогичный: joi

const Joi = require('joi');

const schema = Joi.object().keys({
  userName: Joi.string().alphanum().required(),
  userId: Joi.number().required(),
  userBirthDay: Joi.number().required(),
})

const result = Joi.validate({
  userName: 'johndoe',
  userId: 1234567,
  userBirthDay: 1970,
  userAddress: 'John Doe St.'
}, schema);

if (result.error) {
  console.log(result.error.details);
}

В спецификации вы можете сделать утверждение о существовании ключа error в объекте result используя выбранную вами библиотеку утверждений. В приведенном выше примере предполагается, что вы используете nodejs в качестве среды для запуска тестов, но также существует версия joi для браузера: joi-browser

  • 0
    Спасибо вам большое! Я не очень много слышал об этой теме, но я согласился с тем, что вы сказали, провел некоторые исследования и нашел именно тот инструмент, который мне нужен. : D
  • 0
    @ star98 Мое удовольствие :)
1

Вам нужна проверка схемы, есть библиотеки вроде ajv.

var ajv = new Ajv({ allErrors: true }); // options can be passed, e.g. {allErrors: true}
// API call: GET user - returns : user name, user ID and user birthday.
// With proposed functionality, if the dev team made updates to the Get user call, and it returns the following - return : user name, user ID, user birthday AND user address.
var schema = {
  type: "object",
  properties: {
    userName: {
      type: "string",
    },
    userId: {
      type: "string",
    },
    userBirthdate: {
      type: "string",
    },
  },
  required: ["userName", "userId", "userBirthdate"],
  additionalProperties: false,
};
var validate = ajv.compile(schema);
var validUser = {
  userName: "John",
  userId: "john",
  userBirthdate: "01012000",
};
var invalidUser = {
  userName: "John",
  userId: "john",
  userBirthdate: "01012000",
  userAddress: "World",
};
var valid = validate(validUser);
console.log('Valid user is valid: ${valid}');
valid = validate(invalidUser);
console.log('Invalid user is valid: ${valid}');
console.log('Validate errors:', validate.errors);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/6.6.2/ajv.min.js"></script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню