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



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

Расширение спецификации


Базовый функционал pow описан и реализован, первая итерация разработки завершена. Теперь расширим и уточним его. Как говорилось ранее, функция pow(x, n) предназначена для работы с целыми неотрицательными n .


В JavaScript для ошибки вычислений служит специальное значение NaN , которое функция будет возвращать при некорректных n . Добавим это поведение в спецификацию:

describe("pow", function() {


// ...



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


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

});
Результат с новыми тестами:



Конечно, новые тесты не проходят, так как наша реализация ещё не поддерживает их. Так и задумано: сначала написали заведомо не работающие тесты, а затем пишем реализацию под них.




Другие assert


Обратим внимание, в спецификации выше использована проверка не assert.equal , как раньше, а assert(выражение) . Такая проверка выдаёт ошибку, если значение выражения при приведении к логическому типу не true .


Она потребовалась, потому что сравнивать с NaN обычным способом нельзя: NaN не равно никакому значению, даже самому себе, поэтому
assert.equal(NaN, x) не подойдёт.

Кстати, мы и ранее могли бы использовать assert(value1 == value2) вместо assert.equal(value1, value2) . Оба этих assert проверяют одно и тоже.


Однако, между этими вызовами есть отличие в деталях сообщения об ошибке.

При «упавшем» assert в примере выше мы видим "Unspecified AssertionError" , то есть просто «что‑то пошло не так», а при assert.equal(value1, value2) будут дополнительные подробности: expected 8 to equal 81 .


Поэтому рекомендуется использовать именно ту проверку, которая максимально соответствует задаче.

Вот самые востребованные assert ‑проверки, встроенные в Chai:





  • assert(value) – проверяет что value является true в логическом контексте.

  • assert.equal(value1, value2) – проверяет равенство value1 == value2 .

  • assert.strictEqual(value1, value2) – проверяет строгое равенство value1 === value2 .

  • assert.notEqual , assert.notStrictEqual – проверки, обратные двум предыдущим.

  • assert.isTrue(value) – проверяет, что value === true

  • assert.isFalse(value) – проверяет, что value === false

  • …более полный список – в документации

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


assert(...) . В этом случае для того, чтобы сделать сообщение об ошибке понятнее, желательно добавить к assert описание.


Все вызовы assert позволяют дополнительным последним аргументом указать строку с описанием ошибки, которое выводится, если assert


Download 9,9 Mb.

Do'stlaringiz bilan baham:
1   ...   87   88   89   90   91   92   93   94   ...   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