Sinon - Как проверить, что все ключи массива имеют определенное значение? - PullRequest
0 голосов
/ 13 октября 2018

Я должен предвосхитить все, сказав, что я никогда не писал ранее модульный тест, так что если вы можете быть явным для меня и не предполагать знание передовых практик.Чем вам.

Я пытаюсь создать модульный тест, который проверяет, чтобы каждый ключ "x" имел значение "y".Мой javascript передает либо "a", "b", либо "c" в module.exports.handler = async (letter) =>.

Фильтрует JSON на основе аргумента "a", "b" или "c" и возвращает массив объектов с парами ключ / значение.

Если передано "a", то массив объектов с ключом "x" все имеют значение "y";

если в качестве аргумента передано "b", то массив объектов с ключом "x" имеет значение "z";

и, наконец, если передан аргумент "c", тогда массив объектов с ключом "x" будет иметь значение "w".

 describe('filtering spec', () => {
   it('should return an array of objects each of which with y as the value', async () => {
     // Makes sure the returned array of objects all have y as the corresponding value for key x
   });

   it('should return an array of objects each of which with z as the value', async () => {
     // Makes sure the returned array of objects all have z as the corresponding value for the key x
   });

   it('should return an array of objects each of which with y as the value', async () => {
     // Makes sure the returned array of objects all have w as the corresponding value for the key x
   });

Я предполагаю, что я закончуиспользовать matcher каким-либо образом (см. https://sinonjs.org/releases/latest/matchers/)

1 Ответ

0 голосов
/ 13 октября 2018

Я бы порекомендовал вам использовать метод Array.Filter , чтобы посмотреть, имеет ли какой-либо объект нежелательное значение, , если есть , тогда ваш тест должен провалиться.

let array = [{x: "y"}, {x: "y"}, {x: "y"}, {x: "b"}]

isCorrect = (array, req) => {
  return (array.filter(v => v.x !== req))
}

console.log(isCorrect(array, "y").length ? "failed" : "passed")

Как сказано в комментариях, Array.some на самом деле как минимум 18% быстрее!

let isSome = (list, req) => {
    return (list.some(v => v.x === req))
}

Вы также можете использовать, Array.include ...

...