Size: a a a

2020 July 15

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
по поводу сложности тестов — там код написан так, чтобы он мог выполняться как в jsdom так и в browserstack, то есть на удалённом реальном девайсе
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
вот можно разобрать типичный тест https://github.com/zerobias/effector/blob/master/src/forest/__tests__/list.test.ts#L90
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
exec — это функция, содержимое которой будет сериализованно и отправлено на девайс
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
el — это корневой элемент страницы, что-то типа document.getElementById('root') но гораздо короче в записи


act — это примерно как в модуле для тестов реакта, применяет сайд-эффекты и ждёт реакции рендера

бонусом он делает снапшот el.innerHTML и кладёт его в массив, который и будет возвращён из метода exec обратно в jest (передача данных между девайсами)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
поэтому на четыре вызова act на девайсе приходится четыре снапшота, которые и используются для проверки теста так как разумеется на девайсе методы джеста вызывать нельзя
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
но так как browserstack оооочень медленный, то если ты запустишь yarn test, то всё будет выполняться в jsdom)
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
забавно, но это это самое очевидное для меня было когда я впервые смотрел тесты
источник

н#

не ты зло, а moment.... in ☄️ effector
да елы палы, дай хоть что то работягам сделать 😃
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
вообщем выходит так что в рамках h() созданные дом-ноды никак не связанны с графом, спрятанным в template
те тупо вотчеры на сторах, переданных в спек, апдейтят дом
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
а граф внутри лишь для организации цепочки вычислений
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Paruyr🛸🪐🌏
вообщем выходит так что в рамках h() созданные дом-ноды никак не связанны с графом, спрятанным в template
те тупо вотчеры на сторах, переданных в спек, апдейтят дом
логика темплейтов прошивает весь эффектор насквозь)

https://github.com/zerobias/effector/blob/master/src/effector/createUnit.ts#L265
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Paruyr🛸🪐🌏
вообщем выходит так что в рамках h() созданные дом-ноды никак не связанны с графом, спрятанным в template
те тупо вотчеры на сторах, переданных в спек, апдейтят дом
с темплейтом связан шаблон по которому создаются дом ноды через element.cloneNode()
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
и он один на каждый вызов h, поэтому если ты создаёшь ноду со статическими свойствами (стилями, атрибутами и т.д.), то в рантайме на это время траться не будет вообще
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
ну да, draft
мне раньше казалось что внутри как в реакт файбер
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
а так получается из глобального стейта только currentActor, куда пишет using()
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
те currentActor исключительно на стадии инициализации используется, а дальше уже пофигу?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
ага
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
в рантайме применяется стек уже других сущностей — currentLeaf
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
это то, что создаётся вызовами spawn
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
👍
источник