Эта статья изначально от 21 сентября 2017 года . Я перемещаю свой контент из средних до dev.to
Трудно обойти слово ” Тестирование ” Если вы на пути, чтобы стать профессиональным программистом. Конечно, я прочитал об этом и даже проводил несколько часов, написав тесты и решение искусственных проблем с тестируемым развитием. Но у меня не было возможности применить мои приобретенные знания в моем дневном кодировании жизни. Это просто не вещь на моей работе. Мы не пишем тесты (пока я хочу изменить это) и так долго, все, что я знал о тестировании, было больше на академическом уровне.
ПЭТ проекты для спасения!
Мне повезло работать на нескольких домашних животных с опытными программистами. Самое главное, что я учусь из моих этих проектов, новые или разные рабочие процессы, лучшие практики и узоры. В проекте я сейчас работаю над тем, что я наконец написал реальные тесты в реальной среде. Черт, мне было очень весело!
Всеми способами, я все еще кровавый новичок, когда речь идет о тестировании подразделения. Но теперь я наконец видел и почувствовал все преимущества, которые я прочитал только раньше. И да, я немного влюбился!
С несколькими днями я работаю над текстом о тестировании в Frestend на примере из упомянутого проекта PET. Это помогает мне узнать больше о тестировании. В то же время я пытаюсь создать простой рабочий процесс, чтобы проверить мой код для не тестирующей среды, поэтому я смогу доставить более стабильные решения. Мои новые нашли чувства к тестированию, но я не совсем уверен, если и как они будут работать в моей работе.
Реальный мир догоняет – TIFU
Сегодня я получил ошибный билет. Для простой функции JavaScript я написал несколько месяцев назад. Я видел описание билета, взял один взгляд в код, и я был в ярости у себя. Я мог видеть свою ошибку прямо сейчас И это было глупое.
Фон : Сценарий должен предпринять целое число и вернуть номер, отформатированный в валюте € – точка как тысячи сепаратора при необходимости и «евро» в конце.
Вот как выглядел мой скрипт:
function formatSum(sum) { var sumNum = sum.toString().split(''); var sumFormatted = []; for (var i = 0; i < sumNum.length; i++) { var currNum = sumNum[i]; if (i != 0 && i % 3 == 0) { sumFormatted.push('.'); } sumFormatted.push(currNum); } if (sumFormatted.length > 0) { sumFormatted.push(' Euro'); } return sumFormatted.join(''); }
Я написал это почти 4 месяца назад и действительно, я не горжусь. Никто не заметил ошибку в течение довольно много времени, потому что функция использовалась для форматирования целых чисел, доставленных API и – совпадает, – все они имели Шесть цифр некоторое время.
- Моя первая мысль: Черт, ты глуп.
- Моя вторая мысль: Черт, ты так чертешь глупо, вы только проверили свой скрипт на живом сайте. Вы не правильно проверили свой проклятый код!
- Моя третья мысль: Хм. Вы умнее сейчас, чем тогда.
Меня и тестирование: становится серьезным
Вот что я сделал, чтобы исправить ошибку: я написал тесты. Я не коснулся сценария, я не изменил ни одной вещи. Я открыл мой редактор и Я написал. F Отказ Тесты. *
function assertEqual(actual, expected) { if (expected === actual) { console.info('[SUCCESS] Is ' + expected); } else { console.error('[ERROR] Expected ' + actual + ' to be ' + expected); } } function tests() { console.log('Test results'); assertEqual(formatSum(1), '1 Euro'); assertEqual(formatSum(12), '12 Euro'); assertEqual(formatSum(123), '123 Euro'); assertEqual(formatSum(1234), '1.234 Euro'); assertEqual(formatSum(12345), '12.345 Euro'); assertEqual(formatSum(123456), '123.456 Euro'); assertEqual(formatSum(1234567), '1.234.567 Euro'); }
Я провел тесты.
Билет на ошибку сообщил о ложном формате с 5-значным номером, а тест воспроизводится это – 123,45 евро
вместо 12,345 евро
Отказ
Я исправил мой скрипт.
function formatSum(sum) { var sumNum = sum.toString().split('').reverse(); var sumFormatted = []; for (var i = 0; i < sumNum.length; i++) { var currNum = sumNum[i]; if (i != 0 && i % 3 == 0) { sumFormatted.push('.'); } sumFormatted.push(currNum); } if (sumFormatted.length > 0) { sumFormatted.reverse(); sumFormatted.push(' Euro'); } return sumFormatted.join(''); }
Примечание : Я не трогал его в противном случае. Я не отправил его, я не сделал его лучше, я не сделал это красивее – я только что исправил свою ошибку.
Я снова провел свой тест.
Все сделано. Я мог бы толкать это изменение. Это стоит около 10 минут, чтобы немного проклинать меня, напишите свои тесты и исправьте свой скрипт. Вот и все! Теперь есть тесты для моей функции. Я мог бы рефакторовать IST, напишите новый – что-нибудь. Во время тестирования.
То, что я узнал сегодня
- Мне очень нравится тестирование. Мы, как, серьезно!
- Там так чертовски много вещей, которые я должен узнать о тестировании, и я действительно с нетерпением жду этого.
- Мне не нужно ждать кого-либо или что-нибудь, чтобы написать тесты. Да, было бы лучше всего работать с 100% кодами и тестом Alllll Что-то – но даже один маленький тест может улучшить мой код и сделать меня лучшим программным документом в долгосрочной перспективе. И эй, я перфекционист, я стремиюсь к улучшению;)
- Тестирование не должно быть трудоемким и там дорогим! Напротив: если бы я написал правильные тесты в первую очередь, второй ошибный билет никогда бы не случился.
- Я пишу лучший код сегодня, чем три месяца назад.
- Commiting (иногда даже пишущий) код без тестов чувствует себя как вождение без ремень безопасности сейчас.
Обложка Изображение: Фото Cerys Lowe на Бессмысленно
Оригинал: “https://dev.to/programmiri/how-frontend-unit-testing-turned-from-a-fling-to-a-real-thing-for-me-6bk”