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. Такой вариант позволяет мне очень сильно менять внутренние технические решения и сразу видеть, что с новыми решениями компонент работает так же хорошо, как и со старыми.
Именно такие тесты я сейчас делаю для компонентов.
Комментариев нет:
Отправить комментарий