Mocha - тестирование значений объектов массива - PullRequest
0 голосов
/ 07 ноября 2018

Если у меня есть массив вроде:

[
{ "user": "tom",
  "email": "ee@co.com"
},
{ "user": "james",
  "email": "bb@co.com"
},
{ "user": "ryan",
  "email": "rr@co.com"
}
]

Но это не всегда возвращается в таком порядке - как я могу проверить, например, существует ли ryan где-нибудь в одном из этих объектов?

Ответы [ 3 ]

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

Функция возвращает true, если массив содержит ryan.

var input = [
{ "user": "tom",
  "email": "ee@co.com"
},
{ "user": "james",
  "email": "bb@co.com"
},
{ "user": "ryan",
  "email": "rr@co.com"
}
]
var output = input.some(function(eachRow){
    return eachRow.user === 'ryan';
});

console.log(output);
0 голосов
/ 08 ноября 2018

Мой метод решения состоит в том, чтобы извлечь целевые поля в массивы и затем проверить значение.

const chai = require('chai');
const expect = chai.expect;

describe('unit test', function() {
  it('runs test', function() {
    const users = [
      { "user": "tom",
        "email": "ee@co.com"
      },
      { "user": "james",
        "email": "bb@co.com"
      },
      { "user": "ryan",
        "email": "ryan@co.com"
      }
    ];
    const names = extractField(users, 'user'); // ['tom', 'james', 'ryan']   

    expect(names).to.include('ryan');
  });

  function extractField(users, fieldName) {
    return users.map(user => user[fieldName]);
  }
});

Я использую chai для подтверждения. Если вы хотите проверить другие поля, мы просто используем методы извлечения.

const emails = extractField(users, 'email');
expect(emails).to.include('ryan');

Надеюсь, это поможет

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

Если вы уже используете lodash (или хотите), то я бы использовал его find :

_.find(array, { user: "ryan" })

Или с помощью нескольких символов вы можете сделать это без lodash:

array.find(elem => elem.user === "ryan")

Оба возвращают undefined, если соответствующий элемент не найден.

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