Сборка от 17 марта 2017 г



Download 9,9 Mb.
bet92/349
Sana26.04.2022
Hajmi9,9 Mb.
#582433
TuriУчебник
1   ...   88   89   90   91   92   93   94   95   ...   349
Bog'liq
ilja kantor sovremennyj uchebnik-1chast PdfToWord

не проходит.

Добавим описание ошибки в конец наших assert'ов :


describe("pow", function() {


// ...



it("при возведении в отрицательную степень результат NaN", function() { assert(isNaN(pow(2, ‐1)), "pow(2, ‐1) не NaN");
});


it("при возведении в дробную степень результат NaN", function() { assert(isNaN(pow(2, 1.5)), "pow(2, 1.5) не NaN");
});

});

Теперь результат теста гораздо яснее говорит о том, что не так:

В коде тестов выше можно было бы добавить описание и к assert.equal , указав в конце: assert.equal(value1, value2, "описание") , но с равенством обычно и так всё понятно, поэтому мы так делать не будем.




Итого


Итак, разработка завершена, мы получили полноценную спецификацию и код, который её реализует. Задачи выше позволяют дополнить её, и в результате может получиться что‑то в таком духе:


describe("pow", function() {


describe("raises x to power n", function() { function makeTest(x) {
let expected = x * x * x;
it(`${x} in the power 3 is ${expected}`, function() { assert.equal(pow(x, 3), expected);
});
}

for (let x = 1; x <= 5; x++) { makeTest(x);


}

});

it("if n is negative, the result is NaN", function() { assert.isNaN(pow(2, ‐1));
});

it("if n is not integer, the result is NaN", function() { assert.isNaN(pow(2, 1.5));


});

});

Открыть полный пример с реализацией в песочнице
Эту спецификацию можно использовать как:



  1. Тесты , которые гарантируют правильность работы кода.

  2. Документацию по функции, что она конкретно делает.

  3. Примеры использования функции, которые демонстрируют её работу внутри it .

Имея спецификацию, мы можем улучшать, менять, переписывать функцию и легко контролировать её работу, просматривая тесты. Особенно важно это в больших проектах.


Бывает так, что изменение в одной части кода может повлечь за собой «падение» другой части, которая её использует. Так как всё‑всё в большом проекте руками не перепроверишь, то такие ошибки имеют большой шанс остаться в продукте и вылезти позже, когда проект увидит посетитель или заказчик.
Чтобы избежать таких проблем, бывает, что вообще стараются не трогать код, от которого много что зависит, даже если его ну очень нужно переписать. Жизнь пробивается тонкими росточками там, где должен цвести и пахнуть новый функционал.
Код, покрытый автотестами, являет собой полную противоположность этому!

Даже если какое‑то изменение потенциально может порушить всё – его совершенно не страшно сделать. Ведь есть масса тестов, которые быстро и в автоматическом режиме проверят работу кода. И если что‑то падает, то это можно будет легко локализовать и поправить.


Кроме того, код, покрытый тестами, имеет лучшую архитектуру.

Конечно, это естественное следствие того, что его легче менять и улучшать. Но не только.


Чтобы написать тесты, нужно разбить код на функции так, чтобы для каждой функции было чётко понятно, что она получает на вход, что делает с этим и что возвращает. Это означает ясную и понятную структуру с самого начала.
Конечно, в реальной жизни всё не так просто. Зачастую написать тест сложно. Или сложно поддерживать тесты, поскольку код активно меняется. Сами тесты тоже пишутся по‑разному, при помощи разных инструментов.



Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   88   89   90   91   92   93   94   95   ...   349




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish