47
Javascript Unit Testing Introduction to QUnit & JsTestDriver Wednesday 4 May 2011

Javascript Unit Testting (PHPBenelux 2011-05-04)

Embed Size (px)

DESCRIPTION

As a PHP developer, you've probably had to deal with Javascript at some point in your career. Some of the Javascript code you've written may even have been pretty complex. What happens if you need to make some changes? Will it break existing functionality? The only way to really know if everything is still working, is by unit testing your Javascript. This talk will introduce you to QUnit for creating Javascript unit tests and JsTestDriver for automating these tests.

Citation preview

Page 1: Javascript Unit Testting (PHPBenelux 2011-05-04)

Javascript Unit Testing

Introduction to QUnit & JsTestDriver

Wednesday 4 May 2011

Page 2: Javascript Unit Testting (PHPBenelux 2011-05-04)

Tom Van Herreweghe

PHP developer

ZCE 5.0 & 5.3

I like Javascript

http://blog.theanalogguy.be

@miljar

Wednesday 4 May 2011

Page 3: Javascript Unit Testting (PHPBenelux 2011-05-04)

Overview

Introduction to QUnit

Introduction to JsTestDriver

Wednesday 4 May 2011

Page 4: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit

Wednesday 4 May 2011

Page 5: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit

JS Unit Testing library

JsUnit, DOH, YUI Test, ...

JQuery

http://docs.jquery.com/Qunit

Wednesday 4 May 2011

Page 6: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit setup

Demo

Wednesday 4 May 2011

Page 7: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

module(‘name’[, {lifecycle}])

Wednesday 4 May 2011

Page 8: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

test(‘name’[, expected], test-code)

Wednesday 4 May 2011

Page 9: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit structure

Demo

Wednesday 4 May 2011

Page 10: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

ok(state[, ‘message’])

Wednesday 4 May 2011

Page 11: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

equal(actual, expected[, ‘message’])

corresponds with: ==Wednesday 4 May 2011

Page 12: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

notEqual(actual, expected[, ‘message’])

corresponds with: !=Wednesday 4 May 2011

Page 13: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 14: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

deepEqual(actual, expected[, ‘message’])

corresponds with: === (recursive)Wednesday 4 May 2011

Page 15: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

notDeepEqual(actual, expected[, ‘message’])

corresponds with: !== (recursive)Wednesday 4 May 2011

Page 16: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 17: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

raises(function[, expected][, ‘message’])

Wednesday 4 May 2011

Page 18: Javascript Unit Testting (PHPBenelux 2011-05-04)

QUnit assertions

Demo

Wednesday 4 May 2011

Page 19: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

the good: callbacks

the bad: timers

the ugly: currently not in QUnitAdapter for JsTestDriver

Wednesday 4 May 2011

Page 20: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Timers: hard to predictrunning time + slows down

Wednesday 4 May 2011

Page 21: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Callbacks: run assertions

Wednesday 4 May 2011

Page 22: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Currently not supportedin QUnitAdapter

Wednesday 4 May 2011

Page 23: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

stop()

start()

expect()

asyncTest()

Wednesday 4 May 2011

Page 24: Javascript Unit Testting (PHPBenelux 2011-05-04)

Async testing

Demo

Wednesday 4 May 2011

Page 25: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Wednesday 4 May 2011

Page 26: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Testrunner for your Unit Tests

Written in Java

Client / Server architecture

http://code.google.com/p/js-test-driver

Wednesday 4 May 2011

Page 27: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Wednesday 4 May 2011

Page 28: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Custom syntax

Need mapping from QUnit to JsTestDriver

Some QUnit functionalities not (yet) available

Wednesday 4 May 2011

Page 29: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

module()

test()

ok()

equals()

same() (old name for deepEqual())

Wednesday 4 May 2011

Page 30: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Fetch JAR fromhttp://code.google.com/p/js-test-driver/downloads/list

Wednesday 4 May 2011

Page 31: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Run serverjava -jar /path/to/JsTestDriver-1.3.2.jar --port 4224

Wednesday 4 May 2011

Page 32: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Point browser(s) tohttp://localhost:4224

Wednesday 4 May 2011

Page 33: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Demo

Wednesday 4 May 2011

Page 35: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Create config

Wednesday 4 May 2011

Page 36: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Run testsjava -jar /path/to/JsTestDriver-1.3.2.jar --config

/path/to/jsTestDriver.conf --tests all

Wednesday 4 May 2011

Page 37: Javascript Unit Testting (PHPBenelux 2011-05-04)

JsTestDriver

Demo

Wednesday 4 May 2011

Page 38: Javascript Unit Testting (PHPBenelux 2011-05-04)

Questions?

Read more?

Slideshare

Joind.in

Githubhttps://github.com/Miljar/PHPBenelux-BE-may

Wednesday 4 May 2011

Page 39: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Wednesday 4 May 2011

Page 40: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Download plugin fromhttp://code.google.com/p/js-test-driver/downloads/list

Wednesday 4 May 2011

Page 41: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Include plugin in config

Wednesday 4 May 2011

Page 42: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Add flags when executing tests--testOutput /path/to/outputfolder

Wednesday 4 May 2011

Page 43: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Install LCOV

Wednesday 4 May 2011

Page 44: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Generate HTMLgenhtml /path/to/jsTestDriver.conf-coverage.dat

Wednesday 4 May 2011

Page 45: Javascript Unit Testting (PHPBenelux 2011-05-04)

Code Coverage

Demo

Wednesday 4 May 2011

Page 46: Javascript Unit Testting (PHPBenelux 2011-05-04)

Some links

QUnithttp://docs.jquery.com/Qunit

JsTestDriverhttp://code.google.com/p/js-test-driver/

CI with JsTestDriverhttp://j.mp/acO6QI

Wednesday 4 May 2011