Я создаю автоматизацию для проверки моих файлов, содержащихся в каталоге. В моем каталоге N файлов. Мне нужно найти идентификатор в моих файлах. Когда вы найдете этот идентификатор, сохраните имя файла и прекратите поиск остальных файлов. Если вы не нашли ID в файлах, верните ERROR, то есть сломайте мой тест.
Ниже мой код. В этом коде я могу искать файл, но не могу сохранить имя файла, и если я его не найду, тест прервется (не пройден).
cy.task('getFiles', 'batch/22896431000382/uds/processed')
.then(result => {
const x = result
let continue_loop = true
cy.wrap(continue_loop, { log: false }).as('continue')
for (let i = 0; i < x.length; i++) {
cy.get('@continue', { log: false }).then(continue_loop => {
if (continue_loop) {
cy.readFile(`batch/22896431000382/us/processed/${x[i]}`)
.then(txt => {
// checking for any failed status here
if (txt.includes('IdkBGxcJWaapecROrzNh')) {
return
}
})
}
})
}
});
Отвечает ли это на ваш вопрос? Как я могу прервать цикл for внутри блока then?
Как показано в дублирующем вопросе , вам действительно придется изменить переменную continue_loop
, когда вы больше не хотите... продолжать цикл.
let continue_loop = true
cy.wrap(continue_loop, {log:false}).as('continue')
for (let i = 0; i < result.length; i++) {
cy.get('@continue', {log:false}).then(continue_loop => {
if (continue_loop) {
...
if (txt.includes(...)) {
continue_loop = false
cy.wrap(continue_loop, {log:false}).as('continue')
// save txt for later
cy.wrap(txt).as('txt')
}
}
})
}
cy.get('@txt').then(txt => {
// the txt is found!
Почему не ставишь
continue_loop
?