Size: a a a

JavaScript testing

2020 November 25

OP

Oleksandr Pelykh in JavaScript testing
Filipp Terekhov
Protractor/Jasmine
Поскольку jest с jasmine где-то рядом, то значит такое поведение. Я решал тем, что добавлял асинхронную функцию с микроожиданием (0.1 или 0.01сек) до или после консоль лога.
источник

AP

Alexander Popov in JavaScript testing
Filipp Terekhov
Ага, я понял причину. Дело не в выводе map, а в том, что
       it('Doing something', async () => {
          foo = await module.getfoo(bar);
          console.log(foo);
});

сначала выполняется console.log, а потом уже строчка выше. Непривычное поведение, прямо скажем
А что функция делает та что выше?
источник

FT

Filipp Terekhov in JavaScript testing
данные из UI выдергивает
источник

FT

Filipp Terekhov in JavaScript testing
что интересно, в другом тесте такая же логика, и работает. Почему - непонятно
источник

AP

Alexander Popov in JavaScript testing
Если функция длинная то логне должен раньше работать
источник

FT

Filipp Terekhov in JavaScript testing
Oleksandr Pelykh
Поскольку jest с jasmine где-то рядом, то значит такое поведение. Я решал тем, что добавлял асинхронную функцию с микроожиданием (0.1 или 0.01сек) до или после консоль лога.
попробовал, не работает
источник

OI

Oleksii Ihnatiuk in JavaScript testing
попробуйте
it('Doing something', async function() {
          foo = await module.getfoo(bar);
          console.log(foo);
});
источник

OK

Oleksandr Khotemskyi in JavaScript testing
Filipp Terekhov
Ага, я понял причину. Дело не в выводе map, а в том, что
       it('Doing something', async () => {
          foo = await module.getfoo(bar);
          console.log(foo);
});

сначала выполняется console.log, а потом уже строчка выше. Непривычное поведение, прямо скажем
надо смотреть как getfoo реализован, возможно он резолвит промис раньше чем реально асинхронная операция закончилась
источник

P

Paul G in JavaScript testing
Filipp Terekhov
Ага, я понял причину. Дело не в выводе map, а в том, что
       it('Doing something', async () => {
          foo = await module.getfoo(bar);
          console.log(foo);
});

сначала выполняется console.log, а потом уже строчка выше. Непривычное поведение, прямо скажем
попробуй стрелочную функцию заменить
источник

OK

Oleksandr Khotemskyi in JavaScript testing
Paul G
попробуй стрелочную функцию заменить
Поидее стрелочная не влияет тут, нет обращений к this
источник

P

Paul G in JavaScript testing
Oleksandr Khotemskyi
Поидее стрелочная не влияет тут, нет обращений к this
это понятно, просто уже чисто рандомные кейсы предлагаю, так как хз почему оно так работает
источник

OK

Oleksandr Khotemskyi in JavaScript testing
Paul G
это понятно, просто уже чисто рандомные кейсы предлагаю, так как хз почему оно так работает
Я тоже так иногда в панике начинаю куски кода выкидывать пока не получу ошибку с которой уже знаю что делать
источник

ES

Eugene Stogniy in JavaScript testing
Oleksandr Khotemskyi
Я тоже так иногда в панике начинаю куски кода выкидывать пока не получу ошибку с которой уже знаю что делать
рефакторинг - модное обозначение сего )
источник

B

Bola in JavaScript testing
Oleksandr Khotemskyi
Я тоже так иногда в панике начинаю куски кода выкидывать пока не получу ошибку с которой уже знаю что делать
Вот чем занимается значит cdproject )
источник

FT

Filipp Terekhov in JavaScript testing
Oleksii Ihnatiuk
попробуйте
it('Doing something', async function() {
          foo = await module.getfoo(bar);
          console.log(foo);
});
Попробовал, не помогло. У меня там еще был if, так я вывод консоли вынес специально после него, все равно не работает, бред какой-то
источник

FT

Filipp Terekhov in JavaScript testing
Причем у меня в другом месте такая же логика для других сущностей, и работает. Сравниваю код, выглядит одинаково
источник

m

mkots in JavaScript testing
А можно в хроме заблочить Метод реквеста как-то?
Например есть один эндпоинт \user и у него есть 2 метода post и delete. Можно как-то заблочить делит а пост оставить?
источник

m

mkots in JavaScript testing
Может экстеншн есть какой-то?
источник

VM

Vasiliy Mazo in JavaScript testing
Про хром не знаю, но можно заблочить через mitmproxy наверное.
источник

FT

Filipp Terekhov in JavaScript testing
Смотрю в дебаггере, реально интересно. Формально порядок не нарушается в
       it('Doing something', async () => {
          foo = await module.getfoo(bar);
          console.log(foo);
});

breakpoint сначала на foo=... . Но потом брекпоинт из console.log, а потом уже брекпоинты внутри getfoo. Т.е. до получения результата getfoo() уже происходит вывод в консоль
источник