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



Download 9,9 Mb.
bet305/349
Sana26.04.2022
Hajmi9,9 Mb.
#582433
TuriУчебник
1   ...   301   302   303   304   305   306   307   308   ...   349
Bog'liq
ilja kantor sovremennyj uchebnik-1chast PdfToWord

Ошибки в стиле




Ответ


К условию


Автоматические тесты при помощи chai и mocha



Сделать pow по спецификации




function pow(x, n) { if (n < 0) return NaN;
if (Math.round(n) != n) return NaN;

var result = 1;


for (var i = 0; i < n; i++) { result *= x;
}
return result;
}

Открыть решение с тестами в песочнице.


К условию





Добавьте тест к задаче


Новый тест может быть, к примеру, таким:


it("любое число в степени 0 равно 1", function() { assert.equal(pow(123, 0), 1);


});

Конечно, желательно проверить на нескольких числах.


Поэтому лучше будет создать блок describe , аналогичный тому, что мы делали для произвольных чисел:


describe("любое число, кроме нуля, в степени 0 равно 1", function() {


function makeTest(x) {


it("при возведении " + x + " в степень 0 результат: 1", function() { assert.equal(pow(x, 0), 1);
});
}

for (var x = ‐5; x <= 5; x += 2) { makeTest(x);


}

});
И не забудем добавить отдельный тест для нуля:


...
it("ноль в нулевой степени даёт NaN", function() { assert( isNaN(pow(0, 0)), "0 в степени 0 не NaN");


});
...

Открыть решение с тестами в песочнице.


К условию





Что не так в тесте?


Этот тест демонстрирует один из соблазнов, которые ожидают начинающего автора тестов.


Вместо того, чтобы написать три различных теста, он изложил их в виде одного потока вычислений, с несколькими assert . Иногда так написать легче и проще, однако при ошибке в тесте гораздо менее очевидно, что же пошло не так.


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

Гораздо лучше будет разбить тест на несколько блоков it , с чётко прописанными входными и выходными данными.


describe("Возводит x в степень n", function() { it("5 в степени 1 равно 5", function() {


assert.equal(pow(5, 1), 5);
});

it("5 в степени 2 равно 25", function() { assert.equal(pow(5, 2), 25);


});

it("5 в степени 3 равно 125", function() { assert.equal(pow(5, 3), 125);


});
});

Можно использовать цикл для генерации блоков it , в этом случае важно, чтобы сам код такого цикла был достаточно простым. Иногда проще записать несколько блоков it вручную, как сделано выше, чем «городить огород» из синтаксических конструкций.


К условию


Числа




Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   301   302   303   304   305   306   307   308   ...   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