Для вашего случая вы получили неопределенное значение, потому что var result = data["results"];
выполняется первым перед вашей it('should get series', ..)
функцией.
Одним из решений является реструктуризация теста, чтобы убедиться в правильности порядка выполнения.Мы можем использовать before()
или beforeEach()
Например:
let data;
before(async () => {
data = await legacy.getCategories(config[process.env.TEST_ENV].url, config[process.env.TEST_ENV].origin);
});
it('get collection and series guid', async function() {
var unallowedGuids = config[process.env.TEST_ENV].unallowedGuids;
var result = data["results"]; // it will be executed after data is fetched in `before()`
for (i = 0; i < result.length; i++) {
let guid = result[i]["guid"];
let showName = result[i]["title"];
if (!unallowedGuids.includes(guid)){
let data = await legacy.collectionsGuid(config[process.env.TEST_ENV].url, config[process.env.TEST_ENV].origin, guid);
expect(data).to.be.an('array').that.is.not.empty;
let data = await legacy.seriesGuid(config[process.env.TEST_ENV].url, config[process.env.TEST_ENV].origin, guid);
expect(data).to.be.an('array').that.is.not.empty;
}
else {
console.log("excluded", guid);
}
}
});
Кроме того, вы также можете поместить выборку данных в ту же it()
функцию
// no before()
it('get collection and series guid', async function() {
var unallowedGuids = config[process.env.TEST_ENV].unallowedGuids;
var data = await legacy.getCategories(config[process.env.TEST_ENV].url, config[process.env.TEST_ENV].origin);
var result = data["results"];
....
});
Надеюсь, это поможет