Артем Тритяк
Unittesting frontend
applications at
Backbone.js example
Why?
❖ Regressions testing is too long!
❖ Short sprints issues!
❖ Dangerous refactoring!
❖ Test API usability!
❖ Отличная отмаза: «Что делаете? Пишем тесты!»
What test?
Business logic Public API
What test?
Business logic Public API
Model!
(Service)
Collection Controller
What test?
Shared functionality
Mixins
Base!
views, controllers, models
Helpers
Clean your karma
Karma Test Runner
Karma Test Runner
Karma Test Runner
Karma Test Runner
Runners: Grunt
Runners: Gulp
Istanbul: Code Coverage
Istanbul Karma Gulp
Istanbul: Code Coverage
Karma + Require.js
Karma + Require.js
Jasmine 2.0 / Mocha+Chai
beforeEach / afterEach
Async tests
Sinon.js: Mock XHR
Sinon.js: Stub methods
Sinon.js: Fake and Test
❖ Fake timers: sinon.useFakeTimers();!
❖ Check calls: spy, .calledWith(…), .callCount() etc;!
❖ Have fun
Backbone.Model
Backbone.Collection
Backbone.Collection
Backbone.Controller
Backbone.Controller? WTF?
❖ https://github.com/artyomtrityak/backbone.controller!
❖ Backbone.Marionette controller!
❖ Backbone.Chaplin controller
Backbone.View
No tests
Front-End UnitTesting

Front-End UnitTesting