Убедитесь, что массив не содержит ложных значений в Jest - PullRequest
0 голосов
/ 25 августа 2018

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

Это почему-то не работает - тест проходит:

const badValues = ['', null, undefined, false, {}, []];
expect(values).toEqual(expect.not.arrayContaining(badValues));

Ниже код работает, как и ожидалось (тест не пройден), но, конечно, должен быть правильный способ, вместо того, чтобы перебирать мои значения?

for (const value of values) {
  expect(value).toBeTruthy();
}

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Может быть, это может работать:

var isValid = arrayOfValuesToBeChecked.reduce(function(prev, elem) {
    // If elem is not truthy and if it is object, check its length 
    elem = elem ? typeof(elem) == 'object' ? elem instanceof Array ? elem.length : Object.keys(elem).length : elem : elem;
    return prev && elem;
}, true);
0 голосов
/ 25 августа 2018

Возможна итерация по badValues, а затем includes(), если values и badValues являются массивами строк или чисел, а не объектами.

const badValues = ['', 'null', 'undefined', 'false', '{}', '[]'];

var values = [1,2,3,4,'null',5];


for(let i = 0; i<badValues.length; i++){

   if(values.includes(badValues[i])){
       console.log("bad value present");
       break;
   }

}

В противном случае, я думаю, что нет лучшего способа, чем итерация по values.Это может быть возможно при использовании test() и регулярных выражений, но [, ], {, } являются специальными символами в выражениях регулярных выражений.Поэтому мы должны избежать их.

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