SlideShare a Scribd company logo
*โ€ฏ
*โ€ฏ
*โ€ฏWho Am I?
*โ€ฏState of the Room?
*โ€ฏWays to test Javascript?
*โ€ฏDifferent Testing Environments?
*โ€ฏOverview of Testing Tools
*โ€ฏUsing Testing in your Workflow
*โ€ฏSpaghetti Javascript
*โ€ฏRefactor Spaghetti into Testable Javascript
*โ€ฏInstalling Jasmine + Live Demo
*โ€ฏ
*โ€ฏGavin Pickin โ€“ developing Web Apps since late 90s
*โ€ฏWhat else do you need to know?
*โ€ฏBlog - http://www.gpickin.com
*โ€ฏTwitter โ€“ http://twitter.com/gpickin
*โ€ฏGithub - https://github.com/gpickin
*โ€ฏLets get on with the show.
*โ€ฏ
*โ€ฏA few questions for you guys
*โ€ฏIf you have arms, use them.
*โ€ฏ
*โ€ฏClick around in the browser yourself
*โ€ฏSetup Selenium / Web Driver to click
around for you
*โ€ฏStructured Programmatic Tests
*โ€ฏ
*โ€ฏBlack/White Box
*โ€ฏUnit Testing
*โ€ฏIntegration Testing
*โ€ฏFunctional Tests
*โ€ฏSystem Tests
*โ€ฏEnd to End Tests
*โ€ฏSanity Testing
*โ€ฏRegression Test
*โ€ฏAcceptance Tests
*โ€ฏLoad Testing
*โ€ฏStress Test
*โ€ฏPerformance Tests
*โ€ฏUsability Tests
*โ€ฏ+ More
*โ€ฏ
*โ€ฏIntegration Tests several of the
pieces together
*โ€ฏMost of the types of tests are
variations of an Integration Test
*โ€ฏCan include mocks but can full end
to end tests including DB / APIs
*โ€ฏ
โ€œunit testing is a software verification
and validation method in which a
programmer tests if individual units of
source code are fit for use. A unit is the
smallest testable part of an applicationโ€
- wikipedia
*โ€ฏ
*โ€ฏCan improve code quality -> quick error
discovery
*โ€ฏCode confidence via immediate
verification
*โ€ฏCan expose high coupling
*โ€ฏWill encourage refactoring to produce >
testable code
*โ€ฏRemember: Testing is all about behavior
and expectations
*โ€ฏ
*โ€ฏTDD = Test Driven Development
*โ€ฏWrite Tests
*โ€ฏRun them and they Fail
*โ€ฏWrite Functions to Fulfill the Tests
*โ€ฏTests should pass
*โ€ฏRefactor in confidence
*โ€ฏTest focus on Functionality
*โ€ฏ
*โ€ฏBDD = Behavior Driven Development
Actually similar to TDD except:
*โ€ฏFocuses on Behavior and Specifications
*โ€ฏSpecs (tests) are fluent and readable
*โ€ฏReadability makes them great for all levels of
testing in the organization
*โ€ฏHard to find TDD examples in JS that are not
using BDD describe and it blocks
*โ€ฏ
Test( โ€˜Email address must not be
blankโ€™, function(){
notEqual(email, โ€œโ€, "failed");
});
*โ€ฏ
Describe( โ€˜Email Addressโ€™,
function(){
It(โ€˜should not be blankโ€™, function(){
expect(email).not.toBe(โ€œโ€);
});
});
*โ€ฏ
expect(true).toBe(true);
expect(true).toBe(true);
expect(true).toBe(true);
expect(true).toBe(true);
*โ€ฏ
expect(true).not.toBe(true);
expect(true).not.toBe(true);
expect(true).not.toBe(true);
expect(true).not.toBe(true);
expect(true).not.toBe(true);
*โ€ฏ
expect(true).toBe(true);
expect(a).not.toBe(null);
expect(a).toEqual(12);
expect(message).toMatch(/bar/);
expect(message).toMatch("bar");
expect(message).not.toMatch(/quux/);
expect(a.foo).toBeDefined();
expect(a.bar).not.toBeDefined();
*โ€ฏ
NodeJS - CLI In the Browser
*โ€ฏ
*โ€ฏThere are a few choices
*โ€ฏ
*โ€ฏJasmine, Mocha and QUnit
*โ€ฏ
*โ€ฏJasmine comes ready to go out of the box
*โ€ฏFluent Syntax โ€“ BDD Style
*โ€ฏIncludes lots of matchers
*โ€ฏHas spies included
*โ€ฏVery popular, lots of support
*โ€ฏAngular uses Jasmine with Karma (CLI)
*โ€ฏHeadless running and plays well with CI
servers
*โ€ฏ
*โ€ฏAsync testing in 1.3 can be a
headache
*โ€ฏExpects *spec.js suffix for test files
*โ€ฏThis can be modified depending on
how you are running the tests
*โ€ฏ
describe("Hello world function", function() {
it(โ€contains the word world", function() {
expect(helloWorld()).toContain("world");
});
});
*โ€ฏ
*โ€ฏSimple Setup
*โ€ฏSimple Async testing
*โ€ฏWorks great with other Assertion
libraries like Chai ( not included )
*โ€ฏSolid Support with CI Servers, with
Plugins for others
*โ€ฏOpinion says Mocha blazing the trail for
new features
*โ€ฏ
*โ€ฏRequires other Libraries for key features
*โ€ฏNo Assertion Library included
*โ€ฏNo Mocking / Spied included
*โ€ฏNeed to create the runner manually
*โ€ฏNewer to the game so not as popular or
supported as others but gaining traction.
*โ€ฏ
var expect = require('chai').expect;
describe(โ€™Hello World Function', function(){
it('should contain the word world', function(){
expect(helloWorld()).to.contain(โ€™world');
})
})
*โ€ฏ
*โ€ฏThe oldest of the main testing frameworks
*โ€ฏIs popular due to use in jQuery and age
*โ€ฏEmberโ€™s default Unit testing Framework
*โ€ฏ
*โ€ฏDevelopment slowed down since
2013 (but still under development)
*โ€ฏSyntax โ€“ No BDD style
*โ€ฏAssertion libraries โ€“ limited
matchers
*โ€ฏ
QUnit.test( "ok test", function( assert ) {
assert.ok( true, "true succeeds" );
assert.ok( "non-empty", "non-empty string
succeeds" );
assert.ok( false, "false fails" );
assert.ok( 0, "0 fails" );
assert.ok( NaN, "NaN fails" );
assert.ok( "", "empty string fails" );
assert.ok( null, "null fails" );
assert.ok( undefined, "undefined fails" );
});
*โ€ฏ
Photo Credit โ€“ Kombination
http://www.kombination.co.za/wp-content/uploads/2012/10/baby_w_spaghetti_mess_4987941.jpg
*โ€ฏ
*โ€ฏ
*โ€ฏ
*โ€ฏThings to refactor to make your code testable
*โ€ฏCode should not be one big chunk of
Javascript in onReady()
*โ€ฏDeep nested callbacks & Anon functions
cannot easily be singled out and tested
*โ€ฏRemove Tight Coupling โ€“ DOM access for
example
*โ€ฏ
*โ€ฏLets look at some code
*โ€ฏThis isnโ€™t BEST PRACTICE, its BETTER
PRACTICE than you were doing
*โ€ฏIts not really refactoring if you donโ€™t have
tests, its
โ€œmoving code and asking for troubleโ€
*โ€ฏ
var personObjLit = {
ssn: โ€™xxxxxxxx',
age: '35',
name: 'Gavin Pickin',
getAge: function(){
return this.age;
},
getName: function() {
return this.name;
}
};
*โ€ฏ
var personObjLit2 = function() {
ssn = โ€™xxxxxxx';
age = '35';
name = 'Gavin Pickinโ€™;
return {
getAge: function(){
return age;
},
getName: function() {
return name;
}
};
};
*โ€ฏ
*โ€ฏUsing HTML Test Runners
*โ€ฏKeep a Browser open
*โ€ฏF5 refresh tests
*โ€ฏ
*โ€ฏRun Jasmine โ€“ manual
*โ€ฏRun tests at the end of each section of work
*โ€ฏRun Grunt-Watch โ€“ automatic
*โ€ฏRuns Jasmine on every file change
*โ€ฏGrunt can run other tasks as well,
minification etc
*โ€ฏ
*โ€ฏBrowser Views
*โ€ฏEclipse allows you to open files in
web view โ€“ uses HTML Runner
*โ€ฏRun Jasmine / Grunt / Karma in IDE
Console
*โ€ฏEasy to setup โ€“ See Demoโ€“ Sublime Text 2
*โ€ฏ
*โ€ฏInstall / Run Jasmine Standalone for Browser
*โ€ฏInstall / Run Jasmine with NodeJs
*โ€ฏInstall/ Run Jasmine with Grunt Watch
*โ€ฏInstall / Run Grunt Watch inside Sublime Text 2
*โ€ฏ
Download standalone package from Github (I have 2.1.3)
https://github.com/jasmine/jasmine/tree/master/dist
Unzip into your /tests folder
Run /tests/SpecRunner.html to see example tests
*โ€ฏ
*โ€ฏ
*โ€ฏ
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Jasmine Spec Runner v2.1.3</title>
<link rel="shortcut icon" type="image/png" href="lib/jasmine-2.1.3/jasmine_favicon.png">
<link rel="stylesheet" href="lib/jasmine-2.1.3/jasmine.cssโ€>
<script src="lib/jasmine-2.1.3/jasmine.js"></script>
<script src="lib/jasmine-2.1.3/jasmine-html.js"></script>
<script src="lib/jasmine-2.1.3/boot.js"></script>
<!-- include source files here... -->
<script src="../js/services/loginService.js"></script>
<!-- include spec files here... -->
<script src="spec/loginServiceSpec.js"></script>
</head>
<body>
</body>
</html>
*โ€ฏ
Assuming you have NodeJs Installedโ€ฆ install Jasmine
$ npm install jasmine
jasmine@2.2.1 node_modules/jasmine
โ”œโ”€โ”€ exit@0.1.2
โ”œโ”€โ”€ jasmine-core@2.2.0
โ””โ”€โ”€ glob@3.2.11 (inherits@2.0.1, minimatch@0.3.0)
*โ€ฏ
Once Jasmine is installed in your project
$ Jasmine init
*โ€ฏ
Edit Jasmine.json to update Locations for Spec Files and Helper Files
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
]
}
*โ€ฏ
$ Jasmine
Started
F
Failures:
1) A suite contains spec with an expectation
Message:
Expected true to be false.
Stack:
Error: Expected true to be false.
at Object.<anonymous> (/Users/gavinpickin/Dropbox/Apps/
testApp/www/spec/test_spec.js:3:18)
1 spec, 1 failure
Finished in 0.009 seconds
*โ€ฏ
*โ€ฏJasmine-Node is great for Node
*โ€ฏJasmine Node doesnโ€™t have a headless browser
*โ€ฏHard to test Browser code
*โ€ฏSo what should I use?
*โ€ฏ
*โ€ฏInstall Grunt
npm install grunt
*โ€ฏInstall Grunt โ€“ Jasmine
npm install grunt-contrib-jasmine
*โ€ฏInstall Grunt โ€“ Watch
npm install grunt-contrib-watch
*โ€ฏNote: On Mac, I also needed to install Grunt CLI
npm install โ€“g grunt-cli
*โ€ฏ
// gruntfile.js - https://gist.github.com/gpickin/1e1e7902d1d3676d23c5
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('node_modules/grunt/package.json'),
jasmine: {
all: {
src: ['js/*.js' ],
options: {
//'vendor': ['path/to/vendor/libs/*.js'],
'specs': ['specs/*.js' ]
}
}
},
*โ€ฏ
// gruntfile.js part 2
watch: {
js: {
files: [
'js/*.js',
'specs/*.js',
],
tasks: ['jasmine:all']
}
}
});
*โ€ฏ
// gruntfile.js part 3
grunt.loadNpmTasks('grunt-contrib-jasmine');
grunt.loadNpmTasks('grunt-contrib-watch');
};
*โ€ฏ
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
*โ€ฏ
*โ€ฏ
*โ€ฏ
*โ€ฏInstall PackageControl into Sublime Text
*โ€ฏInstall Grunt from PackageControl
*โ€ฏhttps://packagecontrol.io/packages/Grunt
*โ€ฏUpdate Grunt Sublime Settings for paths
{
"exec_args": { "path": "/bin:/usr/bin:/usr/local/binโ€ }
}
*โ€ฏThen Command Shift P โ€“ grunt
*โ€ฏ
*โ€ฏ
*โ€ฏAny questions?
*โ€ฏCome check out my Cordova Hooks session and see
how you can run Unit Tests (and much more)
whenever youโ€™re preparing a build for your cordova
app.
Ad

More Related Content

What's hot (19)

The Screenplay Pattern: Better Interactions for Better Automation
The Screenplay Pattern: Better Interactions for Better AutomationThe Screenplay Pattern: Better Interactions for Better Automation
The Screenplay Pattern: Better Interactions for Better Automation
Applitools
ย 
Adventures In JavaScript Testing
Adventures In JavaScript TestingAdventures In JavaScript Testing
Adventures In JavaScript Testing
Thomas Fuchs
ย 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
Nicholas Zakas
ย 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
Neil Crosby
ย 
Testacular
TestacularTestacular
Testacular
James Ford
ย 
ES3-2020-P3 TDD Calculator
ES3-2020-P3 TDD CalculatorES3-2020-P3 TDD Calculator
ES3-2020-P3 TDD Calculator
David Rodenas
ย 
Easy tests with Selenide and Easyb
Easy tests with Selenide and EasybEasy tests with Selenide and Easyb
Easy tests with Selenide and Easyb
Iakiv Kramarenko
ย 
Developer Tests - Things to Know
Developer Tests - Things to KnowDeveloper Tests - Things to Know
Developer Tests - Things to Know
Vaidas Pilkauskas
ย 
Protractor Training in Pune by QuickITDotnet
Protractor Training in Pune by QuickITDotnet Protractor Training in Pune by QuickITDotnet
Protractor Training in Pune by QuickITDotnet
QuickITDotNet Training and Services
ย 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
ย 
Testing React Applications
Testing React ApplicationsTesting React Applications
Testing React Applications
stbaechler
ย 
Enhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order componentEnhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order component
Yao Nien Chung
ย 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web Applications
Seth McLaughlin
ย 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
Omnia Helmi
ย 
Test automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubinTest automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubin
Oren Rubin
ย 
Code ceptioninstallation
Code ceptioninstallationCode ceptioninstallation
Code ceptioninstallation
Andrii Lagovskiy
ย 
Web ui tests examples with selenide, nselene, selene & capybara
Web ui tests examples with  selenide, nselene, selene & capybaraWeb ui tests examples with  selenide, nselene, selene & capybara
Web ui tests examples with selenide, nselene, selene & capybara
Iakiv Kramarenko
ย 
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Iakiv Kramarenko
ย 
Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]
Iakiv Kramarenko
ย 
The Screenplay Pattern: Better Interactions for Better Automation
The Screenplay Pattern: Better Interactions for Better AutomationThe Screenplay Pattern: Better Interactions for Better Automation
The Screenplay Pattern: Better Interactions for Better Automation
Applitools
ย 
Adventures In JavaScript Testing
Adventures In JavaScript TestingAdventures In JavaScript Testing
Adventures In JavaScript Testing
Thomas Fuchs
ย 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
Nicholas Zakas
ย 
Automated Frontend Testing
Automated Frontend TestingAutomated Frontend Testing
Automated Frontend Testing
Neil Crosby
ย 
Testacular
TestacularTestacular
Testacular
James Ford
ย 
ES3-2020-P3 TDD Calculator
ES3-2020-P3 TDD CalculatorES3-2020-P3 TDD Calculator
ES3-2020-P3 TDD Calculator
David Rodenas
ย 
Easy tests with Selenide and Easyb
Easy tests with Selenide and EasybEasy tests with Selenide and Easyb
Easy tests with Selenide and Easyb
Iakiv Kramarenko
ย 
Developer Tests - Things to Know
Developer Tests - Things to KnowDeveloper Tests - Things to Know
Developer Tests - Things to Know
Vaidas Pilkauskas
ย 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
ย 
Testing React Applications
Testing React ApplicationsTesting React Applications
Testing React Applications
stbaechler
ย 
Enhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order componentEnhance react app with patterns - part 1: higher order component
Enhance react app with patterns - part 1: higher order component
Yao Nien Chung
ย 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web Applications
Seth McLaughlin
ย 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
Omnia Helmi
ย 
Test automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubinTest automation & Seleniun by oren rubin
Test automation & Seleniun by oren rubin
Oren Rubin
ย 
Code ceptioninstallation
Code ceptioninstallationCode ceptioninstallation
Code ceptioninstallation
Andrii Lagovskiy
ย 
Web ui tests examples with selenide, nselene, selene & capybara
Web ui tests examples with  selenide, nselene, selene & capybaraWeb ui tests examples with  selenide, nselene, selene & capybara
Web ui tests examples with selenide, nselene, selene & capybara
Iakiv Kramarenko
ย 
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Selenide Alternative in Practice - Implementation & Lessons learned [Selenium...
Iakiv Kramarenko
ย 
Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]
Iakiv Kramarenko
ย 

Similar to How do I write testable javascript? (20)

How do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and ClientHow do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and Client
Gavin Pickin
ย 
How do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientHow do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and Client
ColdFusionConference
ย 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
Andy Peterson
ย 
3 WAYS TO TEST YOUR COLDFUSION API -
3 WAYS TO TEST YOUR COLDFUSION API - 3 WAYS TO TEST YOUR COLDFUSION API -
3 WAYS TO TEST YOUR COLDFUSION API -
Ortus Solutions, Corp
ย 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API
Gavin Pickin
ย 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
Ortus Solutions, Corp
ย 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
Ben Hall
ย 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight Guy
David Padbury
ย 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
ย 
เธชเธ›เธฃเธดเธ‡เน€เธŸเธฃเธกเน€เธงเธดเธฃเนŒเธ„4.1
เธชเธ›เธฃเธดเธ‡เน€เธŸเธฃเธกเน€เธงเธดเธฃเนŒเธ„4.1เธชเธ›เธฃเธดเธ‡เน€เธŸเธฃเธกเน€เธงเธดเธฃเนŒเธ„4.1
เธชเธ›เธฃเธดเธ‡เน€เธŸเธฃเธกเน€เธงเธดเธฃเนŒเธ„4.1
เธ—เธงเธดเธฃ เธžเธฒเธ™เธดเธŠเธชเธกเธšเธฑเธ•เธด
ย 
BDD in iOS with Cedar
BDD in iOS with CedarBDD in iOS with Cedar
BDD in iOS with Cedar
Jason McCreary
ย 
Developer Tests - Things to Know (Vilnius JUG)
Developer Tests - Things to Know (Vilnius JUG)Developer Tests - Things to Know (Vilnius JUG)
Developer Tests - Things to Know (Vilnius JUG)
vilniusjug
ย 
Testing in AngularJS
Testing in AngularJSTesting in AngularJS
Testing in AngularJS
Peter Drinnan
ย 
Quick tour to front end unit testing using jasmine
Quick tour to front end unit testing using jasmineQuick tour to front end unit testing using jasmine
Quick tour to front end unit testing using jasmine
Gil Fink
ย 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
ipolevoy
ย 
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran MizrahiIntro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
Ran Mizrahi
ย 
Effecient javascript
Effecient javascriptEffecient javascript
Effecient javascript
mpnkhan
ย 
UI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected JourneyUI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected Journey
Oren Farhi
ย 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
Stoyan Stefanov
ย 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
Martijn Dashorst
ย 
How do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and ClientHow do I write Testable Javascript so I can Test my CF API on Server and Client
How do I write Testable Javascript so I can Test my CF API on Server and Client
Gavin Pickin
ย 
How do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and ClientHow do I Write Testable Javascript so I can Test my CF API on Server and Client
How do I Write Testable Javascript so I can Test my CF API on Server and Client
ColdFusionConference
ย 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
Andy Peterson
ย 
3 WAYS TO TEST YOUR COLDFUSION API -
3 WAYS TO TEST YOUR COLDFUSION API - 3 WAYS TO TEST YOUR COLDFUSION API -
3 WAYS TO TEST YOUR COLDFUSION API -
Ortus Solutions, Corp
ย 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API
Gavin Pickin
ย 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
Ortus Solutions, Corp
ย 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
Ben Hall
ย 
HTML5 for the Silverlight Guy
HTML5 for the Silverlight GuyHTML5 for the Silverlight Guy
HTML5 for the Silverlight Guy
David Padbury
ย 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
ย 
BDD in iOS with Cedar
BDD in iOS with CedarBDD in iOS with Cedar
BDD in iOS with Cedar
Jason McCreary
ย 
Developer Tests - Things to Know (Vilnius JUG)
Developer Tests - Things to Know (Vilnius JUG)Developer Tests - Things to Know (Vilnius JUG)
Developer Tests - Things to Know (Vilnius JUG)
vilniusjug
ย 
Testing in AngularJS
Testing in AngularJSTesting in AngularJS
Testing in AngularJS
Peter Drinnan
ย 
Quick tour to front end unit testing using jasmine
Quick tour to front end unit testing using jasmineQuick tour to front end unit testing using jasmine
Quick tour to front end unit testing using jasmine
Gil Fink
ย 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
ipolevoy
ย 
Intro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran MizrahiIntro To JavaScript Unit Testing - Ran Mizrahi
Intro To JavaScript Unit Testing - Ran Mizrahi
Ran Mizrahi
ย 
Effecient javascript
Effecient javascriptEffecient javascript
Effecient javascript
mpnkhan
ย 
UI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected JourneyUI Testing Best Practices - An Expected Journey
UI Testing Best Practices - An Expected Journey
Oren Farhi
ย 
JavaScript performance patterns
JavaScript performance patternsJavaScript performance patterns
JavaScript performance patterns
Stoyan Stefanov
ย 
Keep your Wicket application in production
Keep your Wicket application in productionKeep your Wicket application in production
Keep your Wicket application in production
Martijn Dashorst
ย 
Ad

More from devObjective (20)

Lets git together
Lets git togetherLets git together
Lets git together
devObjective
ย 
Raspberry Pi a la CFML
Raspberry Pi a la CFMLRaspberry Pi a la CFML
Raspberry Pi a la CFML
devObjective
ย 
Command box
Command boxCommand box
Command box
devObjective
ย 
Effective version control
Effective version controlEffective version control
Effective version control
devObjective
ย 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
devObjective
ย 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better apps
devObjective
ย 
Csp and http headers
Csp and http headersCsp and http headers
Csp and http headers
devObjective
ย 
Who owns Software Security
Who owns Software SecurityWho owns Software Security
Who owns Software Security
devObjective
ย 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobile
devObjective
ย 
Web hackingtools 2015
Web hackingtools 2015Web hackingtools 2015
Web hackingtools 2015
devObjective
ย 
Node without servers aws-lambda
Node without servers aws-lambdaNode without servers aws-lambda
Node without servers aws-lambda
devObjective
ย 
I am-designer
I am-designerI am-designer
I am-designer
devObjective
ย 
Garbage First and You!
Garbage First and You!Garbage First and You!
Garbage First and You!
devObjective
ย 
Fusion Reactor
Fusion ReactorFusion Reactor
Fusion Reactor
devObjective
ย 
Paying off emotional debt
Paying off emotional debtPaying off emotional debt
Paying off emotional debt
devObjective
ย 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the Server
devObjective
ย 
Authentication Control
Authentication ControlAuthentication Control
Authentication Control
devObjective
ย 
Multiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mqMultiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mq
devObjective
ย 
Preso slidedeck
Preso slidedeckPreso slidedeck
Preso slidedeck
devObjective
ย 
Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDD
devObjective
ย 
Lets git together
Lets git togetherLets git together
Lets git together
devObjective
ย 
Raspberry Pi a la CFML
Raspberry Pi a la CFMLRaspberry Pi a la CFML
Raspberry Pi a la CFML
devObjective
ย 
Command box
Command boxCommand box
Command box
devObjective
ย 
Effective version control
Effective version controlEffective version control
Effective version control
devObjective
ย 
Front end-modernization
Front end-modernizationFront end-modernization
Front end-modernization
devObjective
ย 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better apps
devObjective
ย 
Csp and http headers
Csp and http headersCsp and http headers
Csp and http headers
devObjective
ย 
Who owns Software Security
Who owns Software SecurityWho owns Software Security
Who owns Software Security
devObjective
ย 
Naked and afraid Offline mobile
Naked and afraid Offline mobileNaked and afraid Offline mobile
Naked and afraid Offline mobile
devObjective
ย 
Web hackingtools 2015
Web hackingtools 2015Web hackingtools 2015
Web hackingtools 2015
devObjective
ย 
Node without servers aws-lambda
Node without servers aws-lambdaNode without servers aws-lambda
Node without servers aws-lambda
devObjective
ย 
I am-designer
I am-designerI am-designer
I am-designer
devObjective
ย 
Garbage First and You!
Garbage First and You!Garbage First and You!
Garbage First and You!
devObjective
ย 
Fusion Reactor
Fusion ReactorFusion Reactor
Fusion Reactor
devObjective
ย 
Paying off emotional debt
Paying off emotional debtPaying off emotional debt
Paying off emotional debt
devObjective
ย 
My SQL Skills Killed the Server
My SQL Skills Killed the ServerMy SQL Skills Killed the Server
My SQL Skills Killed the Server
devObjective
ย 
Authentication Control
Authentication ControlAuthentication Control
Authentication Control
devObjective
ย 
Multiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mqMultiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mq
devObjective
ย 
Preso slidedeck
Preso slidedeckPreso slidedeck
Preso slidedeck
devObjective
ย 
Intro to TDD & BDD
Intro to TDD & BDDIntro to TDD & BDD
Intro to TDD & BDD
devObjective
ย 
Ad

Recently uploaded (20)

Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
ย 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
ย 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
ย 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
ย 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
ย 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
ย 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
ย 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
ย 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
ย 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
ย 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
ย 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
ย 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
ย 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
ย 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
ย 

How do I write testable javascript?