Size: a a a

2020 May 07

SK

Slava Kharchenko in JS for testing
Дарова гайз, кто-то подскажет если что-то на подобии waitFor у mocha, chai?
источник

O

Oleh in JS for testing
Подскажите, добавил кастомную команду в cypress и вызываю ее в before
источник

O

Oleh in JS for testing
before(() => {
   cy.wrap(userHelper.createRandomUsername()).as('username').then((username) =>{
       cy.createUserByApi(username).as('newUserData');
   });
   cy.fixture('users/super_user.json').as('usersData').then((user) => {
       apiHelper.loginByAPI(user.username, user.password);
   });
   cy.wrap(userHelper.createRandomPassword()).as('newPassword');
});
источник

O

Oleh in JS for testing
Потом пытаюсь вызвать как console.log('newUserData', newUserData);
источник

O

Oleh in JS for testing
В первом it все хорошо, в консоль бросает объект
источник

O

Oleh in JS for testing
А в следующих undefined
источник

O

Oleh in JS for testing
Хотя с тем, что заворачивал в cy.wrap проблем не возникает
источник

O

Oleh in JS for testing
Как вообще такое может быть. Или Алиасы живут только определенное время?
источник

O

Oleh in JS for testing
Но если сделать глобальную переменную в функции типа let userData;
источник

O

Oleh in JS for testing
cy.wrap(userHelper.createRandomUsername()).as('username').then((username) => {
   cy.createUserByApi(username).then((newUserData) => {
       userData = newUserData;
   });
});
источник

O

Oleh in JS for testing
И таким образом ей присвоить
источник

O

Oleh in JS for testing
То будет доступна со всех it
источник

OS

Oleksandr Shevtsov in JS for testing
@OlegSimfi
Похожий принцип, что и у этой дефолтной задачки с собесов:
console.log(1)
setTimeout(() => console.log(2), 1000)
setTimeout(() => console.log(3), 500)
console.log(4)

Обьект передал копию ссылки как аргумент в консоль лог - по этой копии вывело значение
Другие примитивы передают в консоль лог значение, которое в момент построения дерева вызовов еще undefined - его тебе и вернет
источник

O

Oleh in JS for testing
Ага, я понял, потому-что асинхронность?
источник

OS

Oleksandr Shevtsov in JS for testing
Oleh
Потом пытаюсь вызвать как console.log('newUserData', newUserData);
у тебя задача впихнуть синхронный консоль лог где-то в чейнере, или передать данные?
источник

OS

Oleksandr Shevtsov in JS for testing
Oleh
Ага, я понял, потому-что асинхронность?
асинхронность + особенности передачи обьектов и других примитивов
источник

O

Oleh in JS for testing
Oleksandr Shevtsov
у тебя задача впихнуть синхронный консоль лог где-то в чейнере, или передать данные?
Передать данные в другой it
источник

OS

Oleksandr Shevtsov in JS for testing
с before хука через алиас?
источник

O

Oleh in JS for testing
Ага
источник

O

Oleh in JS for testing
Oleksandr Shevtsov
с before хука через алиас?
Без использования глобальной переменной в функции
источник