Код этой функции (в веб-приложении React) берет случайную выборку элементов для тестирования в каждой тестовой функции для сквозного тестирования:
if (randomSample) {
for (const test of selectedTestFunctions) {
let total = getSampleSize(testFunctions.filter(tf => tf.testID === test)[0].itemTypeFilter);
let item;
let itemsTested = [];
for (let count = 0; itemsTested.length < total; count++) {
while (itemsTested.includes(item) || !item) {
item = itemTypes[getRandomItemType()];
}
const payload = {
"itemPrefix": item.itemPrefix,
"testFunction": test,
};
await apis.testRunner(payload).then(res => {
setOutput((prevOutput) => [...prevOutput, `${item.itemPrefix}: ${res.data.result}`]);
if (res.data.completed) {
itemsTested.push(item);
} else {
item = null;
}
});
}
}
return;
}
Функция getSampleSize
возвращает целое число в зависимости от теста, а for
цикл повторяется до тех пор, пока не будет запущено необходимое количество выборок. В while
Цикл предназначен для того, чтобы один и тот же элемент не проверялся более одного раза. Если тест не завершен, устанавливаю item = null
поэтому выбирается другой элемент, потому что это указывает на то, что в тесте произошла ошибка, а не на то, что он не прошел.
Хотя он работает правильно, я получаю предупреждение Function declared in a loop contains unsafe references to variable(s) 'item', 'item', 'item' no-loop-func
на линии await apis.testRunner(payload).then(res => {
.
Как я могу улучшить этот код? В частности, можно ли убрать предупреждение?