Я тут трішки подивився за JavaScript фреймворком для юніт тестів, попиваючи мате.
Раніше сама ідея писати тести для JavaScript здавалася мені дикою втратою часу. Але новий час - нові аплікації. Для безсерверної веб аплікації JavaScript виконує не тільки функції представлення, а й контролера з доступом до даних. Саме цей доступ я і вирішив покрити юніт тестами.
Насправді доступне не маленьке коло фреймворків, але деякі з них недороблені (принаймі я не побачив гарної документації, прикладів застосування), деякі вже не підтримуються. Тож мій вибір впав на QUnit - простий і документований від jQuery команди.
Під капотом у цього фреймворку:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit</title>
<link rel="stylesheet" href="qunit.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="qunit.js"></script>
<script src="tests.js"></script>
</body>
</html>
Потім tests.js для тестів:
test( "Мій перший тест на JS", function() {
ok( true, "Пройшов!" );
});
І на завершення, звідки брати qunit.css і qunit.js - CDN в низу сторінки.
QUnit простий як дошка і легкий для використання. Якщо вам потрібно щось серйозніше з інтеграцією під різні платформи (від nodejs i .NET до Ruby i Django) я би радив подивитися на jasminejs.
Під капотом у цього фреймворку:
- Три типи assert'ів: ok, equal, deepEqual (для порівняння складних об'єктів);
- Синхронні і асинхронні тести. Приємно враження справили асинхронні тести - зрозумілі і не вимагали танців з бубном.
- Групування тестів. З можливістю задати тест, який буде виконуватися до чи після кожного тесту в групі.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit</title>
<link rel="stylesheet" href="qunit.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="qunit.js"></script>
<script src="tests.js"></script>
</body>
</html>
Потім tests.js для тестів:
test( "Мій перший тест на JS", function() {
ok( true, "Пройшов!" );
});
І на завершення, звідки брати qunit.css і qunit.js - CDN в низу сторінки.
QUnit простий як дошка і легкий для використання. Якщо вам потрібно щось серйозніше з інтеграцією під різні платформи (від nodejs i .NET до Ruby i Django) я би радив подивитися на jasminejs.
Немає коментарів:
Дописати коментар