TestDrivenDevelopment
View Slide
Kerrick LongThings I make and do Where to find me onlinetwitter.com/KerrickLonggithub.com/KerrickLead Front-end Developerat Second StreetKerrickLong.comwww.meetup.com/STLEmber
Why TDD?
Outside-In
Integration TestsUnit Teststhen
RedGreenRefactor
GreenRefactor
Test-DrivenDesign
How?
Integration Test
Integration TestUnit Test
Integration TestUnit TestUnit TestUnit Test
Integration TestUnit TestUnit TestUnit TestUnit Test
Tooling
KarmaTest Runner
QUnit.js
Assertions
QUnit.assert.ok(makeBoolean())Assertions
QUnit.assert.equal(makeTen(),'10')Assertions
QUnit.assert.strictEqual(makeTen(),10)Assertions
QUnit.assert.deepEqual(makeObject(),{ foo: ‘bar’, baz: 10 })Assertions
QUnit.assert.propEqual(makeObject(),{ foo: ‘bar’, baz: 10 })Assertions
QUnit.assert.throws(function() { throwError() },‘Example Thrown Error’)Assertions
Ember TestHelpers
App.rootElement = ‘#qunit-fixture’App.setupForTesting()App.injectTestHelpers(QUnit)
QUnit.visit(‘/posts’)
QUnit.find(‘.add’, ‘.list’)
QUnit.fillIn(‘.name’,‘Kerrick’)
QUnit.click(‘.submit’)
QUnit.keyEvent(‘.wysiwyg’,‘keypress’,30)
QUnit.visit(‘/posts/new’).fillIn(‘.name’, ‘Hello’).click(‘.submit’).then(function() {QUnit.assert.ok(true)})
QUnit.visit(‘/posts/new’)QUnit.fillIn(‘.name’, ‘Hi’)QUnit.click(‘.submit’)QUnit.andThen(function() {QUnit.assert.ok(true)})
Integration Tests
ControllerUnit Tests
ComponentUnit Tests
MixinUnit Tests