У меня есть следующие функции для синтаксического анализа массива и возвращать только определенные элементы:Сохранить переменную глобальной переменной во время вызова функции
function fetchLogs(logs) {
var arr = logs.value;
var res = arr.reduce((a, b) => {
if (b.level === 'INFO') {
a.push(b.message.split(" ").pop().replace(/"/g, ""))
}
return a;
}, []);
console.log("function", res);
return res; // Is this return right?
}
Использование функции, чтобы получить журналы браузер вернулся (Браузер и браузер B) и проверить соответствие совпадений.
Так что мой тест выглядит, что
it('should return logs from browser B', function(done) {
browserB
.log('browser')
.then(function(logs) {
fetchLogs(logs);
done();
})
.catch(function(e) {
done(e);
})
});
И в конце концов, я хочу, чтобы сравнить эти Массивы
it('should compare browser logs', function() {
expect(logsA).to.have.all.members(logsB);
});
Вопрос здесь:
Как я могу сохранить переменную res от функции до моей ранее объявленной глобальной переменной l ogsB внутри, когда я вызываю fetchLogs (журналы) функция? Нужен ли мне ответ или обещание?
Является ли также функция надлежащим образом с возвратом?
если вы используете 'вар fetchResult = fetchLogs()', то вы будете иметь журналы в виде вар вы можете делать все, что с. (например, установить глобальный или использовать его в качестве параметра для функции, которая запускает тест. Таким образом, ваше возвращение правильное, если это на самом деле то, что вы пытаетесь сделать. Рассматривая код, вы, вероятно, хотите две переменные logsA и logsB которые находятся в том же объеме, что и функции, поэтому эти функции могут видеть logsA и logsB. – Shilly
@Shilly Работает как шарм, и я понятия не имею, почему я об этом не думал :) – mrks