Size: a a a

2020 January 08

SC

Sergey Chepets in JS for testing
Ведь тест надо задержать и дождаться или ошибки или успешного завершения. А у нас проверка в колбеке, который вызовится, когда словим ивент реквеста
источник

SC

Sergey Chepets in JS for testing
Вроде все звучит как нормальная хрень для JS, но я еще с таким не сталкивался.
источник

OI

Oleksii Ihnatiuk in JS for testing
Что приходит в голову. Напишите функцию, которая будет ждать сколько вам надо и зпфейлится по окончанию времени. Положите внутрь ивент. Если ивент сработал, то переменная тру и функция не фейлится
источник

BO

Boris Osipov in JS for testing
Sergey Chepets
Не могу придумать как завершить тест. Словил, проверил, все норм. Как тесту дать понять что все ок?
ну ты же всегда можешь старым моковским методом написать через done()

it('lolkek', function(done) {
   someInstance.onEvent(function(event) {
     assert.equal(event.content, {foo: "bar"});
     done();
   })
});
источник

BO

Boris Osipov in JS for testing
а лучше в промис заверни это все, да и меньше кишков будет торчать наружу
источник

DK

Dmytro Kryshtopenko in JS for testing
Bola
Если парсит, то все ок
Оно опускает фигурные скобки?
источник

SC

Sergey Chepets in JS for testing
Boris Osipov
а лучше в промис заверни это все, да и меньше кишков будет торчать наружу
Да, обвертка в промис норм решение, но есть один момент. Раньше я хотел начинать слушать до, того как начинатиь накликивать в браузере, но при подходе с промисом мне надо сначала накликать в браузере, а потом запустить метод с промисом. При таком подходе я ведь могу пропустить реквест и будут ложные срабатывания теста. Или я где-то что-то упускаю?
источник

BO

Boris Osipov in JS for testing
Sergey Chepets
Да, обвертка в промис норм решение, но есть один момент. Раньше я хотел начинать слушать до, того как начинатиь накликивать в браузере, но при подходе с промисом мне надо сначала накликать в браузере, а потом запустить метод с промисом. При таком подходе я ведь могу пропустить реквест и будут ложные срабатывания теста. Или я где-то что-то упускаю?
не оч понятно что значит "могу пропустить реквест"
вот как то так можно. код на коленке и вообще я не настоящий сварщик :)
https://gist.github.com/BorisOsipov/ffa3b1b2b8d34257c690e061321756cc
источник

SC

Sergey Chepets in JS for testing
Boris Osipov
не оч понятно что значит "могу пропустить реквест"
вот как то так можно. код на коленке и вообще я не настоящий сварщик :)
https://gist.github.com/BorisOsipov/ffa3b1b2b8d34257c690e061321756cc
вот такой кейс - жмем кнопку save, проверяем реквест. Если я вставлю функцию с промисом после нажатия кнопки save, то могу начать слушать, когда запрос уже будет отправлен.
источник

BO

Boris Osipov in JS for testing
ну так это логично блин, что слушать надо до действия...
источник

SC

Sergey Chepets in JS for testing
т.е. нажатие кнопки save нужно выполнять внутри функции с промисом(
источник

BO

Boris Osipov in JS for testing
не обязательно, но проблема то в чем?
источник

BO

Boris Osipov in JS for testing
давай гистом с псевдокодом лучше..
источник

SC

Sergey Chepets in JS for testing
не очень понимаю как в твоем примере сначала выполнить await eventAssert а потом нажать кнопку Save?
источник

SC

Sergey Chepets in JS for testing
Boris Osipov
давай гистом с псевдокодом лучше..
ок, сейчас  набросаю
источник

BO

Boris Osipov in JS for testing
Sergey Chepets
не очень понимаю как в твоем примере сначала выполнить await eventAssert а потом нажать кнопку Save?
а зачем это делать. зачем делать await до того как "нажать кнопку Save" в этом и смысл чтобы делать await в конце..
источник

SC

Sergey Chepets in JS for testing
Boris Osipov
а зачем это делать. зачем делать await до того как "нажать кнопку Save" в этом и смысл чтобы делать await в конце..
но тогда ведь получится, что вызывая метод в конце я могу пропустить событие. Вот пример того что я хочу, но не могу понять как это выполнить с промисом https://gist.github.com/saveg/e290bab092f8e00fc1f90217bcd75b67
источник

BO

Boris Osipov in JS for testing
>но тогда ведь получится, что вызывая метод в конце я могу пропустить событие.

почему, ты же понимаешь что промис "работает" и до того как на нем позвали then\await?
пример
let promiseVar = fetch("https://gist.github.com/")
и тут уже запрос ушел на сервер. не важно что мы не просили еще результат запроса...

ну или я что-то не понимаю)
источник

SC

Sergey Chepets in JS for testing
Boris Osipov
>но тогда ведь получится, что вызывая метод в конце я могу пропустить событие.

почему, ты же понимаешь что промис "работает" и до того как на нем позвали then\await?
пример
let promiseVar = fetch("https://gist.github.com/")
и тут уже запрос ушел на сервер. не важно что мы не просили еще результат запроса...

ну или я что-то не понимаю)
о_О, спасибо) теперь вкурил твой пример!
источник

BO

Boris Osipov in JS for testing
Sergey Chepets
о_О, спасибо) теперь вкурил твой пример!
а накидал из твоего кода пример
https://gist.github.com/BorisOsipov/396555cc74321eee419aa25a3bbbf2ab
источник