Size: a a a

JavaScript.Ninja

2020 August 17

VS

Vitaliy Stoliarov in JavaScript.Ninja
Размышляю по поводу того, как писать близкие к идеалу юнит тесты (и фичи, которые поддаются такому тестированию), и пока выделил такие пункты
- моки это зло, по возможности нужно избегать их
- сайд эффекты выносить как можно дальше от основной логики (в дополнение к первому)
- тесты не должны даже поверхностно повторять функционал
- использовать подходы, такие как в jsverify
- изменение функционала не должно провоцировать равносильный фиксинг тестов

С учетом того, что в сети я нахожу много профанских статей о том, как писать юнит тесты, и на практике часто вижу тесты, которые пишутся "для галочки"

Что еще можете добавить?
источник

IK

Illya Klymov in JavaScript.Ninja
Vitaliy Stoliarov
Размышляю по поводу того, как писать близкие к идеалу юнит тесты (и фичи, которые поддаются такому тестированию), и пока выделил такие пункты
- моки это зло, по возможности нужно избегать их
- сайд эффекты выносить как можно дальше от основной логики (в дополнение к первому)
- тесты не должны даже поверхностно повторять функционал
- использовать подходы, такие как в jsverify
- изменение функционала не должно провоцировать равносильный фиксинг тестов

С учетом того, что в сети я нахожу много профанских статей о том, как писать юнит тесты, и на практике часто вижу тесты, которые пишутся "для галочки"

Что еще можете добавить?
Добро пожаловать в мир фаулера
источник

IK

Illya Klymov in JavaScript.Ninja
Моки не зло
источник

IK

Illya Klymov in JavaScript.Ninja
источник

IK

Illya Klymov in JavaScript.Ninja
Все придумано до нас
источник

IK

Illya Klymov in JavaScript.Ninja
Пока я не согласен практически со всеми пунктами
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
то есть малейшее изменение функционала, которое провоцирует фиксинг тестов - это норм?
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
скажем, такие как изменение CSS селекторов, потому что в тестах они прибиты гвоздями
источник

IK

Illya Klymov in JavaScript.Ninja
Vitaliy Stoliarov
то есть малейшее изменение функционала, которое провоцирует фиксинг тестов - это норм?
Что значит "равносильное". Что значит изменение функциональности?
Если мы изменили публичное апи - надо править тесты
источник

IK

Illya Klymov in JavaScript.Ninja
Vitaliy Stoliarov
скажем, такие как изменение CSS селекторов, потому что в тестах они прибиты гвоздями
Значит вы их обрабатывает как часть апи. А являются ли они таковым?
источник

IK

Illya Klymov in JavaScript.Ninja
Property based testing практически не применимо во фронтенде
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
Illya Klymov
Что значит "равносильное". Что значит изменение функциональности?
Если мы изменили публичное апи - надо править тесты
допустим, есть функция, которая имеет внутри N вызовов с сайд эффектами, мы написали на нее тесты указав моки/стабы, и в какой-то момент после ее рефакторинга оказывается, что приложение крашится в том месте, где есть сайд эффект, хотя тесты как и прежде проходят. А вся причина в том, что mock не дал проверить ту часть
источник

MK

Maxim Kostenko in JavaScript.Ninja
Vitaliy Stoliarov
то есть малейшее изменение функционала, которое провоцирует фиксинг тестов - это норм?
А не путаете ли вы e2e и unit-тесты?
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
Maxim Kostenko
А не путаете ли вы e2e и unit-тесты?
нет
источник

VS

Vitaliy Stoliarov in JavaScript.Ninja
в целом, как по мне, UI более рационально тестировать через E2E, но увы...
источник

MK

Maxim Kostenko in JavaScript.Ninja
Ну по хорошему тебе нужны интеграционные и юнит тесты. Юнит тесты позволят тебе сократить объём и дублирование интеграционных тестов
источник

KI

Kiryl Ivanov in JavaScript.Ninja
@xanf_ua может посоветуешь хорошую (на твой взгляд) книгу или статью со сборникам советов по написанию Unit-тестов?
источник

KI

Kiryl Ivanov in JavaScript.Ninja
Потому что я тоже нередко слышу от ребят что по максимуму необходимо избавляться от моков в unit-тестах
источник

r

readme.md in JavaScript.Ninja
От каких ребят? Как они респ апи тестируют?
источник

Г

Георгий in JavaScript.Ninja
Трансляция задерживается(((
источник