javascript unit testing using jasmine and tools
TRANSCRIPT
![Page 1: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/1.jpg)
JavaScript Unit testingusing jasmine and tools
![Page 2: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/2.jpg)
По месту исполнения кода
Серверный JSjasmine-node
Клиентский JSбраузер?
![Page 3: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/3.jpg)
jasmine-node
1. npm install jasmine-node -g2. jasmine-node specs/
*-spec.js
можно обернуть запуск тестов в package.json
![Page 4: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/4.jpg)
jasmine-nodeХорошо Плохо
1) Есть полезные опций: --autorun --junitreport
1) Если dom - то лучше отказаться
2) не все опции работают как хотелось бы
![Page 5: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/5.jpg)
browser?
Headless:1. zombie.js (эмуляция)2. PhantomJS (webkit)
Real browser:3. jsTestDriver4. testacular5. selenium webdriver
![Page 6: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/6.jpg)
headless
1. zombie.js2. PhantomJS
![Page 7: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/7.jpg)
zombie.js
1. npm install zombie2. writing async tests using jasmine-node
![Page 8: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/8.jpg)
Хорошо Плохо1) fast2) headless
1) Just emulation...2) using jasmine-node
zombie.js
thanks, but no!
![Page 9: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/9.jpg)
PhantomJS
1. npm install phantomjs -g
1. grunt-jasmine-runner2. phantom-jasmine
![Page 10: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/10.jpg)
Хорошо Плохо1) fast2) headless
1) Все инструменты не очень комфортны для использования*
Только WebKit
PhantomJS
*кроме testacular, но о нем позже
![Page 11: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/11.jpg)
Browsers for real
![Page 12: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/12.jpg)
Хорошо Плохо1) Хорошая документация2) Зрелая библиотека с устоявшимся API3) Отличная с IDE
1) Не на github2) Говорят работает не стабильно3) Нужна JVM
jsTestDriver
![Page 13: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/13.jpg)
Testacular
1. npm install testacular@canary -g2. testacular init <config_name>3. testacular start <config_name>
![Page 14: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/14.jpg)
Хорошо Плохо1) Все браузеры + phantomjs2) Приличная документация3) Слежение за изменением файлов4) Режим сервера/один прогон5) Легкая интеграция с IDE6) JUnit + code coverage
1) Необходимо заранее продумывать разрешение зависимостей js файлов
Testacular
![Page 15: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/15.jpg)
Selenium webdriver
1. https://github.com/larrymyers/jasmine-reporters/tree/master/src
○ jasmine.junit_reporter.js (допиливаем)
2. jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('', false)
);
![Page 16: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/16.jpg)
Selenium webdriver
3. спеки в листьях
4. selenium ->
return jasmine.JUnitXmlReporter.output
http://jenkins.bizaccount.test:8081/tests-
http://jenkins.bizaccount.test:8081/tests/profile
![Page 17: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/17.jpg)
Хорошо Плохо1) Универсально
2) Зависимости JS файлов решаются на уровне приложения
3) Разработчики вообще не замарачиваются организацией тестирования
1) Отностильно долгое время feedback'а2) Нет кучи плюшек, в том числе, пока что coverage
Selenium webdriver
![Page 18: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/18.jpg)
Заключение
1. Если headless - то предпочтительнее PhantomJS
2. Real Browser лучше
3. testacular лучше
![Page 19: JavaScript Unit Testing Using Jasmine And Tools](https://reader036.vdocuments.site/reader036/viewer/2022062313/558c9526d8b42aeb248b4600/html5/thumbnails/19.jpg)
СсылкиСтатья содержит много полезных ссылок на почти все упомянутое:
1. http://anykeytocreate.blogspot.ru/2012/11/unittesting-for-javascript-environment.html
Jasmine:
2. http://pivotal.github.com/jasmine/
Headless:
3. http://zombie.labnotes.org/4. http://phantomjs.org/
Real Browsers:
5. http://code.google.com/p/js-test-driver/6. http://vojtajina.github.com/testacular/7. http://seleniumhq.org/docs/03_webdriver.jsp
Пообсуждать в confluence
8. http://confluence.dvlp.2gis.local/pages/viewpage.action?pageId=104465152