JSON фильтр и функция подтверждения в Node.js - PullRequest
0 голосов
/ 14 ноября 2018

я получаю следующий ответ от API:

{
    "fieldErrors": [
        {
            "field": "firstName",
            "code": "Pattern",
            "message": "Invalid characters"
        },
        {
            "field": "repeatPassword",
            "code": "Size",
            "message": "Size must be between 6 and 64 characters"
        },
        {
            "field": "password",
            "code": "Size",
            "message": "Size must be between 6 and 64 characters"
        },
        {
            "field": "firstName",
            "code": "Size",
            "message": "Size must be between 3 and 32 characters"
        },
        {
            "field": "lastName",
            "code": "Pattern",
            "message": "Invalid characters"
        },
        {
            "field": "email",
            "code": "Size",
            "message": "Size must be between 3 and 256 characters"
        },
        {
            "field": "password",
            "code": "AmRestUser.PasswordTooWeak",
            "message": "Password is to weak (must consist of upper and lower case, digits, and can't contain first name)."
        },
        {
            "field": "phoneNo",
            "code": "order.summary.invalidPhone",
            "message": "Invalid Phone"
        }
    ],
    "isSuccess": false
}

Я пишу API-тесты с использованием Mocha и хочу проверить поля всех существующих ошибок

Я пишу следующие тесты:

      var selected = res.body.fieldErrors.filter(function(item){
        return (item["field"]=="firstName" && item["code"] == "Pattern"  && item["message"]=="Invalid characters"); 
      });
      assert.equal(selected.length,1);

      selected = res.body.fieldErrors.filter(function(item){
        return (item["field"]=="repeatPassword" && item["code"] == "Size"  && item["message"]=="Size must be between 6 and 64 characters"); 
      });
      assert.equal(selected.length,1);

У меня есть тесты, но есть много избыточного кода, в этом случае я должен написать один и тот же код восемь раз, трудно поддерживать

Теперь я хочу написать одну функцию, в параметрах которой я мог бы передать json, а также имена кода, сообщения и поля.Функция должна возвращать количество вхождений, как я могу это сделать?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы не сказали нам, какую библиотеку утверждений вы используете, но вот самый простой способ сделать это (без каких-либо дополнительных функций или сопоставлений):

Утверждение Чая см .: deepEqual Например: assert.deepEqual(res.body, expected)

Для подтверждения узла см. deepStrictEqual напр .: assert.deepStrictEqual(res.body, expected)

expected - это константа с объектом, который вы вставили в свой первый фрагмент кода. Или, конечно, вы можете изменить его на массив fieldErrors. Это зависит от вас.

При этом вам нужно вести только список ошибок, если что-то меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...