Когато за пръв път започнах работа с codeception се сблъсках с някои неизбежни проблеми. Ще се опитам да ги покажа за да оцените приимуществото на тази система, както и тестовете като цяло.
Ето ги и тях:
- Първото нещо, което ми разкри codeception е файловата ми структура и начина по които е организирана. Важно е какви файлове се зареждат от всяка една част на апликацията и ако са преплетени един в друг може да усложни много тестването. Настройките, които първоначално нагласям трябва да са изолирани и да не пречат на тестовете. Това ми даде възможност да тествам с различни параметри всяка една част от системата. Най-лесния начин за добавяне на други параметри за мен беше да подам .env.testing файл преди .env на Codeception, което ми гарантира, че всичко може да се замени.
- Повечето неща при мен преминаваха през DI контейнер и това много улесни и тестването. Но за другите зависимости веднага си личи кое не си е на мястото. Най-много при unit тестването.. когато не можете да тествате определен вариант или да mock-нете някой клас. Точно в тези случаи трябва всичко да се изчисти за да работите по-добре за в бъдеще и тестовете да се пишат по-лесно.
- Докато пиша тестовете аз на практика си проверявах кода сам. На няколко пъти ми се е случвало да си показвам кода на колеги, да обеснявам какво прави и тогава винаги съм откривал някои грешки или съм се сещал за по-добри решения – принципа на гуменото пате. Не е толкова важно какво ще каже другия човек, но самото усилие да се предаде някаква информация ни настройва да мислим различно и да си открием проблеми или решения. Имам и реално гумено пате, но нещо не върши добра работа и не работи при мен. Това което работи почти по същия начин е писането на тестове. Тогава минавам кода повторно да обмисля логически какво трябва да тествам, както и дали не съм изпуснал нещо, но вече като мисля в перспектива. Тогава откривам най-много бъгове и ги хващам в преди дори да пусна и един тест.
Това са едни от най-сериозните ми приимущества при писането на тестове. Те помагат още преди да се пуснат за проверка.