пятница, 22 октября 2021 г.

Какие тесты мне совершенно не помогают?

Groups nested in the tabbed form item cause the "Too much recursion" error in FireFox Тесты, которые проверяют использование конкретного решения.

Например, в файле toolbarModule.tests.js из https://github.com/DevExpress/DevExtreme/pull/19205/files есть проверка assert.strictEqual($boxItemContent.css('flexBasis'), 'auto', 'Box item content flex-basis is \'auto\'');

Я согласен, что это проверка. Я понимаю, что она проверяет наличие конкретного CSS стиля у конкретного DOM элемента. Но для какого внешнего поведения компонента нужен этот конкретный стиль? Из теста это не понятно.

Или, файл formLayoutManager.markup.tests.js с аналогичным assert.ok(templatesInfo[0].container.hasClass('dx-field-item'), 'template container of field item');

Опять проверка какого-то конкретного CSS класса у какого-то конкретного DOM элемента.

Эти две проверки не позволяют мне внести новые изменения для упрощения логики компонента.

После раскопок в истории изменений я выяснил что они нужны для решения проблемы "Groups nested in the tabbed form item cause the "Too much recursion" error in FireFox". По моему опыту, проверка конкретного CSS стиля в конкретного DOM элемента не гарантирует, что в этом сценарии компонент правильно работает сейчас и будет правильно работать в будущем. Вместо этого, тесты проверяют, что в компоненте в конкретном месте использовано конкретное техническое решение.

КОнечно так можно строить тесты, но сейчас этот вариант тестирования начал мне мешать. На эти сценарии я уже сделал группу тестов в https://github.com/DevExpress/DevExtreme/blob/21_2/testing/tests/DevExpress.ui.widgets.form/form.API.option_tabs.tests.js , в них есть конфигурация из исходной проблемы и автоматический запуск тестов показывает, что они проходят на всех браузерах. Это позволило мне удалить старые тесты и продолжить работу над упрощением кода.

Новые тесты построены как "черный ящик": работа компонента в них проверяется только через публичный API. Такой вариант позволяет мне очень сильно менять внутренние технические решения и сразу видеть, что с новыми решениями компонент работает так же хорошо, как и со старыми.

Именно такие тесты я сейчас делаю для компонентов.

Комментариев нет:

Отправить комментарий