SlideShare a Scribd company logo
Test Driven AngularJS
Andy Pliszka	


!
!

@AntiTyping	

AntiTyping.com	

github.com/dracco
Problems
jQuery
• Low-level DOM modification
• Inserting data into DOM
• Extracting data from DOM
• Code duplication
Boilerplate code
• Copy and paste
• jQuery DOM manipulation
• Backbone.js views
• Event handlers
Lack of Structure
• Rails folder structure
• Django folder structure
• Running tests
Imperative code
• GUIs are declarative
• HTML, CSS are declarative
• Front end code is mostly imperative
• Difficult to understand
• Maintenance nightmares
Lack of modularity
• Monolithic applications
• Rigid and interconnected code
• Difficult to test
• Forced to use hight level integration tests
• Large team issues
Testability
• Front end code is poorly tested
• Poor support from libraries
• jQuery
• Backbone.js
• In browser testing
• Lack of command line tools
Problem
Summary
Toolset
node.js
• Platform
• JavaScript

var http = require('http');!
!
http.createServer(!
function (request, response) {!
response.writeHead(200, {'Content-Type': 'text/plain'});!
response.end('Hello Worldn');!
}!
).listen(8000);!
!
console.log('Server running at http://localhost:8000/');

• Google’s V8 JavaScript engine
• Created by Ryan Dahl
npm
• Official package manager for Node.js
• npm search
• npm install
package.json
{
"name": "AngularDo",
"version": "1.0.0",
"dependencies": {
"angular": "~1.0.7",
"json3": "~3.2.4",
"jquery": "~1.9.1",
"bootstrap-sass": "~2.3.1",
"es5-shim": "~2.0.8",
"angular-resource": "~1.0.7",
"angular-cookies": "~1.0.7",
"angular-sanitize": "~1.0.7"
},
"devDependencies": {
"angular-mocks": "~1.0.7",
"angular-scenario": "~1.0.7"
}
}
YOEMAN
Automate
• Repetitive tasks
• Tests
• Compilation of assets
Create
• Bootstrap the app
• Folder structure
• Generators
Development
• Watch files
• Recompile (Sass, CoffeeScript)
• Reload browser
Deploy
• Testing
• Linting and compilation
• Concatenation and minification
• Image optimization
• Versioning
Installation
• brew install nodejs
• npm install -g yo
• npm install -g generator-angular
Yo
create a new web app

• mkdir AngularApp && cd $_
• yo angular
• yo angular:controller
Bower
manage dependencies

• bower search
• bower install
bower.json
{
"name": "AngularDo",
"version": "1.0.0",
"dependencies": {
"angular": "~1.0.7",
"json3": "~3.2.4",
"jquery": "~1.9.1",
"bootstrap-sass": "~2.3.1",
"es5-shim": "~2.0.8",
"angular-resource": "~1.0.7",
"angular-cookies": "~1.0.7",
"angular-sanitize": "~1.0.7"
},
"devDependencies": {
"angular-mocks": "~1.0.7",
"angular-scenario": "~1.0.7"
}
}
Grunt
preview, test, build

• grunt server
• grunt test
• grunt build
Jasmine
• Behavior-driven development framework
• Specs for your JavaScript code
• Write expectations
• Uses matchers
Jasmine Suites
describe("A suite", function() {
var flag;
!
beforeEach(function() {
flag = true;
});
!
it("contains spec with an expectation", function() {
expect(flag).toBe(true);
});
});
Jasmine Expectations
describe("A suite", function() {
it("contains spec with an expectation", function() {
expect(true).toBe(true);
});
});
Jasmine Matchers
expect(a).toBe(b);
expect(a).not.toBe(null);
expect(a).toEqual(12);
expect(null).toBeNull();
!
expect(message).toMatch(/bar/);
!
expect(a.foo).toBeDefined();
expect(a.bar).toBeUndefined();
!
expect(foo).toBeTruthy();
expect(a).toBeFalsy();
!
expect(['foo', 'bar', 'baz']).toContain('bar');
!
expect(bar).toThrow();
Demo
Features
• Display list of tasks
• Add a new task
• Mark task as done
• Add a new task with a priority
• Filter tasks by priority
• Search tasks
• Task counter
Feature UI
Tracker
Setup
Install dependencies
• rvm install 2.0
• gem install compass
• brew install nodejs
• npm install -g bower
• npm install -g yo
• npm install -g generator-angular
• npm install -g karma
Project setup
• mkdir AngularDo
• cd AngularDo
• yo angular AngularDo
yo angular AngularDo
AngularDo app
grunt server
Rails RESTful back-end
• curl -L https://get.rvm.io | bash -s stable
• rvm install 2.0
• git clone git@github.com:dracco/AngularDoStore.git
• cd AngularDoStore
• bundle
• rails s
rails s
Angular front-end
• git clone git@github.com:dracco/AngularDo.git
• cd AngularDo
• npm install
• bower install
• grunt server
Angular front-end
Project structure
./run-e2e-tests.sh
./run-unit-tests.sh
Dev setup
• grunt server
• rails s
• ./run-unit-tests.sh
• ./run-e2e-tests.sh
Feature #1
List of tasks
git checkout -f feature_1_step_0
List of tasks
User story
As a user,
I should be able to see list of tasks,
so I can choose the next task
!

Scenario: Display list of tasks
When I navigate to the task list
Then I should see the list of tasks
e2e scenario
describe("Task List", function() {
it('should display list of tasks', function() {
expect(repeater('tr.item').count()).toBe(3);
});
});
Red scenario
ng-repeat
<tbody>
<tr ng-repeat="task in tasks" class="task">
<td>{{$index + 1}}</td>
<td>{{task.name}}</td>
</tr>
</tbody>
TaskCtrl unit test
!
describe("TaskCtrl", function() {
it('should populate scope with list of tasks',
inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
$controller('TaskCtrl', { $scope: scope });
expect(scope.tasks.length).toEqual(3);
}));
});
Red unit test
TaskCtrl
'use strict';
!
angular.module('AngularDoApp')
.controller('TaskCtrl', function ($scope) {
$scope.tasks = [
{name: 'Task 1'},
{name: 'Task 2'},
{name: 'Task 3'},
];
});

<div class="row" ng-controller="TaskCtrl">
Green TaskCtrl test
Green e2e scenario
List of tasks
All test are green
Feature #1 Summary
• List of tasks (ng-repeat)
• Task list (TaskCtrl)
• e2e scenario
• TaskCtrl unit test
• No low level DOM manipulation (ng-repeat)
Feature #1 Summary
• LiveReload of the browser
• App code watcher
• Unit test watcher
• e2e scenario watcher
Feature #2
Add a new task
git checkout -f feature_2_step_0
Feature UI
User Story
As a user,
I should be able to add a new task,
so I can update my list of tasks
!

Scenario: Add a valid new task
When I add a valid new task
Then I should see the task in the list
!

Scenario: Add an invalid new task
When I add an invalid new task
Then I should see an error message
e2e scenario
describe("Add a new task", function() {
describe("when the new task is valid", function() {
beforeEach(function() {
input('item.name').enter("New item");
element('button.js-add').click();
});
!
it("should add it to the list", function() {
expect(element('tr.task:last').text()).toMatch(/New item/);
expect(repeater('tr.task').count()).toBe(4);
});
!
it('should clear the new item box', function() {
expect(input('item.name').val()).toEqual('');
});
});
...
e2e scenario
describe("Add a new task", function() {
...
!
describe("when the new task is invalid", function() {
beforeEach(function() {
input('item.name').enter("");
element('button.js-add').click();
});
!
it("should leave the task list unchanged", function() {
expect(repeater('tr.item').count()).toBe(3);
});
!
it("should display an error message", function() {
expect(element('div.alert').count()).toBe(1);
});
});
});
Red scenario
ng-model

<input name="name"
ng-model="task.name" required ng-minlength="3" ...>
ng-click
<button ng-click="add(task); task.name = '';"
ng-disabled="form.$invalid" ...>Add</button>
ng-show
<div ng-show="form.name.$dirty &&
form.name.$invalid &&
form.name.$error.minlength" ...>
Task name should be at least 3 characters long.
</div>
Error message
Red scenario
TaskCtrl unit test
describe("add", function() {
var task;
!
it("should adds new task to task list", function() {
task = jasmine.createSpy("task");
scope.add(task);
expect(scope.tasks.length).toEqual(4);
});
});
Red unit test
TaskCtrl
angular.module('AngularDoApp')
.controller('TaskCtrl', function ($scope) {
$scope.tasks = [
{name: 'Task 1'},
{name: 'Task 2'},
{name: 'Task 3'},
!
];
!
$scope.add = function(task) {
var newTask = new Object();
newTask.name = task.name;
$scope.tasks.push(newTask);
};
});
Green unit test
Green e2e scenario
All test are green
Feature #2 Summary
• Dynamic list (ng-repeat)
• Validations (requires, ng-minlength)
• Disabled button (ng-disabled)
• Tests
Feature #3
Mark task as done
git checkout -f feature_3_step_0
Feature UI
User Story
As a user,
I should be able to mark tasks as done,
so I can keep track of completed work
!

Scenario: Mark task as done
When I mark a task as done
Then the task should be remove from the list
!
e2e scenario
describe("Mark task as done", function() {
it("should remove the task from the task list", function() {
element('button.js-done:last').click();
expect(repeater('tr.task').count()).toBe(2);
});
});
Red scenario
ng-click
<td>
<button ng-click="remove($index, task)" class="js-done">
Done
</button>
</td>
Red scenario
remove() unit test
!

describe("remove", function() {
it("should remove the task from task list", function() {
var task = jasmine.createSpy("task");
scope.remove(1, task);
expect(scope.tasks.length).toEqual(2);
});
});
Red unit test
remove()
angular.module('AngularDoApp')
.controller('TaskCtrl', function ($scope) {
...
!
$scope.remove = function(index, task) {
$scope.tasks.splice(index, 1);
};
});
Green unit test
Green e2e scenario
All test are green
Feature #3 Summary
• e2e scenario
• TaskCtrl unit test
• Click handler (ng-click)
Feature #4
Add task with priority
git checkout -f feature_4_step_0
Feature UI
User Story
As a user,
I should be able to set task priority,
so I can keep track of urgent tasks
!

Scenario: Add a task with priority
When I add task with priority
Then the task list should include priorities
!
e2e scenario

!
it("should set priority", function() {
expect(element("span.priority:last").text()).toMatch(/medium/);
});
Red scenario
ng-init
<select ng-init="task.priority = 'high'" ng-model="task.priority">
<option value="high">High</option>
<option value="medium">Medium</option>
<option value="low">Low</option>
</select>
Red scenario
{{task.priority}}
<tr ng-repeat="task in tasks" class="task">
<td>{{$index + 1}}</td>
<td>
{{task.name}}
<span class="priority label">{{task.priority}}</span>
</td>
...
</tr>
Priority unit test
it("should adds new task to task list", function() {
task = {name: 'Task 4', priority: 'high'}
scope.add(task);
expect(scope.tasks.length).toEqual(4);
expect(scope.tasks[3].name).toEqual('Task 4');
expect(scope.tasks[3].priority).toEqual('high');
});
Red unit test
Add priorities
.controller('TaskCtrl', function ($scope) {
$scope.tasks = [
{name: 'Task 1', priority: 'high'},
{name: 'Task 2', priority: 'medium'},
{name: 'Task 3', priority: 'low'}
];
!
$scope.add = function(task) {
var newTask = new Object();
newTask.name = task.name;
newTask.priority = task.priority;
$scope.tasks.push(newTask);
};
!
...
});
Green unit test
Green e2e scenario
All test are green
Feature #5 Complete
Feature #5
Priority filter
git checkout -f feature_5_step_0
Feature UI
User Story
As a user,
I should be filter tasks by priority,
so I can find hight priority tasks
!

Scenario: Priority filter
When I select ‘high’ priority filter
Then I should see only high priority tasks
!
e2e scenario
describe("Filter by priority", function() {
describe("when high priority is selected", function() {
it("should display only high priority tasks", function() {
element("a.priority:contains('high')").click();
expect(repeater('tr.task').count()).toBe(1);
});
});
!
describe("when high priority is selected", function() {
it("should display only medium priority tasks", function() {
element("a.priority:contains('medium')").click();
expect(repeater('tr.task').count()).toBe(1);
});
});
!
...
Red scenario
filter
task.priority == query.priority

<tr ng-repeat="task in tasks | filter:query)" ...>

<li ng-class="{'active': query.priority == ''}">
<a ng-init="query.priority = ''"
ng-click="query.priority = ''; $event.preventDefault()"...>
All
</a>
</li>
Green e2e scenario
All test are green
Feature #5 Complete
Feature #6
Search tasks
git checkout -f feature_6_step_0
Feature UI
User Story
As a user,
I should be able to search tasks,
so I can find important tasks
!

Scenario: Search task
When I search for ‘Task 1’
Then I should see ‘Task 1’ in the list
!
e2e scenario
describe("Task search", function() {
it("should only display task that match the keyword", function() {
input("query.name").enter("Task 1");
expect(repeater('tr.task').count()).toBe(1);
expect(element('tr.task').text()).toMatch(/Task 1/);
});
});
Red scenario
filter:query
<input ng-init="query.name = ''" ng-model="query.name" ...>
!
!
!
!
<button ng-click="query.name =''" ...>Clear</button>
!
!
!
!
<tr ng-repeat="task in tasks | filter:query" class="task">
Green e2e scenario
All test are green
Feature #6 Complete
Feature #7
Persist tasks
git checkout -f feature_7_step_0
User Story
As a user,
I should be able to persist my tasks,
so I can access my task anywhere
!

Scenario: Persist tasks
When I add a new task
Then it should be persisted in the database
!

Scenario: Mark as task as done
When I mark a task as done
Then it should be removed from the database
!
$resource unit tests
!
it("should save the new task", function() {
scope.add(task);
expect($save).toHaveBeenCalled();
});

it("should remove new task from data store", function() {
scope.remove(1, task);
expect(task.$remove).toHaveBeenCalled();
});
Red unit test
$resource
angular.module('AngularDoApp')
.controller('TaskCtrl', function ($scope, Task, $resource) {
...
})
.factory('Task', ['$resource', function($resource){
return $resource('http://localhost:3000/:path/:id', {}, {
query: {method:'GET', params:{path:'tasks.json'}, isArray:true},
get: {method:'GET', params:{path:''}},
save: {method:'POST', params:{path:'tasks.json'}},
remove: {method:'DELETE', params:{path:'tasks'}}
});
}]);;
$save, $remove
$scope.add = function(task) {
var newTask = new Task(); // use to be new Object()
newTask.name = task.name;
newTask.priority = task.priority;
newTask.$save();
$scope.tasks.push(newTask);
};
!
$scope.remove = function(index, task) {
var id = task.url.replace("http://localhost:3000/tasks/", '');
task.$remove({id: id});
$scope.tasks.splice(index, 1);
};
Green unit test
All test are green
Feature #7 Complete
Feature #8
Task counter
git checkout -f feature_8_step_0
Feature UI
User Story
As a user,
I should be see the number of tasks,
so I can estimate amount of outstanding work
!

Scenario: Task counter
When I navigate to home page
Then I should see the number of tasks
e2e scenario

describe("Task counter", function() {
it("should display number of visible tasks", function() {
expect(element(".js-task-counter").text()).toEqual("3 tasks");
});
});
Red e2e scenario
pluralize filter
{{filtered.length | pluralize:'task'}}

<tr ng-repeat="task in filtered = (tasks | filter:query)" ...>
pluralize unit test
describe('pluralizeFilter', function() {
it('should return pluralized number of nouns',
inject(function(pluralizeFilter) {
expect(pluralizeFilter(0, "apple")).toBe('No apples');
expect(pluralizeFilter(1, "apple")).toBe('1 apple');
expect(pluralizeFilter(2, "apple")).toBe('2 apples');
}));
});
Red unit test
pluralize filter
'use strict';
!
angular.module('AngularDoApp')
.filter('pluralize', function() {
return function(number, noun){
if (number == 0)
return "No " + noun + "s";
if (number == 1)
return number + " " + noun;
return number + " " + noun + "s";
}
});
Green unit test
Green e2e scenario
All test are green
Feature #8 Complete
grunt build
Questions?

More Related Content

What's hot

Advanced Jasmine - Front-End JavaScript Unit Testing
Advanced Jasmine - Front-End JavaScript Unit TestingAdvanced Jasmine - Front-End JavaScript Unit Testing
Advanced Jasmine - Front-End JavaScript Unit Testing
Lars Thorup
 
AngularJS Unit Testing
AngularJS Unit TestingAngularJS Unit Testing
AngularJS Unit Testing
Prince Norin
 
AngularJS Testing Strategies
AngularJS Testing StrategiesAngularJS Testing Strategies
AngularJS Testing Strategies
njpst8
 
Jasmine BDD for Javascript
Jasmine BDD for JavascriptJasmine BDD for Javascript
Jasmine BDD for Javascript
Luis Alfredo Porras Páez
 
Testing in AngularJS
Testing in AngularJSTesting in AngularJS
Testing in AngularJS
Peter Drinnan
 
Intro to testing Javascript with jasmine
Intro to testing Javascript with jasmineIntro to testing Javascript with jasmine
Intro to testing Javascript with jasmine
Timothy Oxley
 
JavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and KarmaJavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and Karma
Christopher Bartling
 
AngularJS Unit Test
AngularJS Unit TestAngularJS Unit Test
AngularJS Unit Test
Chiew Carol
 
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
Christopher Bartling
 
Testing Javascript with Jasmine
Testing Javascript with JasmineTesting Javascript with Jasmine
Testing Javascript with Jasmine
Tim Tyrrell
 
Karma - JS Test Runner
Karma - JS Test RunnerKarma - JS Test Runner
Karma - JS Test Runner
Sebastiano Armeli
 
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
 
Jquery- One slide completing all JQuery
Jquery- One slide completing all JQueryJquery- One slide completing all JQuery
Jquery- One slide completing all JQuery
Knoldus Inc.
 
Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101
Roy Yu
 
Describe's Full of It's
Describe's Full of It'sDescribe's Full of It's
Describe's Full of It's
Jim Lynch
 
Full Stack Unit Testing
Full Stack Unit TestingFull Stack Unit Testing
Full Stack Unit Testing
GlobalLogic Ukraine
 
Unit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma introUnit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma intro
Maurice De Beijer [MVP]
 
Jasmine - why JS tests don't smell fishy
Jasmine - why JS tests don't smell fishyJasmine - why JS tests don't smell fishy
Jasmine - why JS tests don't smell fishy
Igor Napierala
 
Unit testing JavaScript using Mocha and Node
Unit testing JavaScript using Mocha and NodeUnit testing JavaScript using Mocha and Node
Unit testing JavaScript using Mocha and Node
Josh Mock
 
Unit testing with mocha
Unit testing with mochaUnit testing with mocha
Unit testing with mocha
Revath S Kumar
 

What's hot (20)

Advanced Jasmine - Front-End JavaScript Unit Testing
Advanced Jasmine - Front-End JavaScript Unit TestingAdvanced Jasmine - Front-End JavaScript Unit Testing
Advanced Jasmine - Front-End JavaScript Unit Testing
 
AngularJS Unit Testing
AngularJS Unit TestingAngularJS Unit Testing
AngularJS Unit Testing
 
AngularJS Testing Strategies
AngularJS Testing StrategiesAngularJS Testing Strategies
AngularJS Testing Strategies
 
Jasmine BDD for Javascript
Jasmine BDD for JavascriptJasmine BDD for Javascript
Jasmine BDD for Javascript
 
Testing in AngularJS
Testing in AngularJSTesting in AngularJS
Testing in AngularJS
 
Intro to testing Javascript with jasmine
Intro to testing Javascript with jasmineIntro to testing Javascript with jasmine
Intro to testing Javascript with jasmine
 
JavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and KarmaJavaScript TDD with Jasmine and Karma
JavaScript TDD with Jasmine and Karma
 
AngularJS Unit Test
AngularJS Unit TestAngularJS Unit Test
AngularJS Unit Test
 
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma JavaScript Test-Driven Development with Jasmine 2.0 and Karma
JavaScript Test-Driven Development with Jasmine 2.0 and Karma
 
Testing Javascript with Jasmine
Testing Javascript with JasmineTesting Javascript with Jasmine
Testing Javascript with Jasmine
 
Karma - JS Test Runner
Karma - JS Test RunnerKarma - JS Test Runner
Karma - JS Test Runner
 
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
 
Jquery- One slide completing all JQuery
Jquery- One slide completing all JQueryJquery- One slide completing all JQuery
Jquery- One slide completing all JQuery
 
Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101Javascript Testing with Jasmine 101
Javascript Testing with Jasmine 101
 
Describe's Full of It's
Describe's Full of It'sDescribe's Full of It's
Describe's Full of It's
 
Full Stack Unit Testing
Full Stack Unit TestingFull Stack Unit Testing
Full Stack Unit Testing
 
Unit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma introUnit testing JavaScript: Jasmine & karma intro
Unit testing JavaScript: Jasmine & karma intro
 
Jasmine - why JS tests don't smell fishy
Jasmine - why JS tests don't smell fishyJasmine - why JS tests don't smell fishy
Jasmine - why JS tests don't smell fishy
 
Unit testing JavaScript using Mocha and Node
Unit testing JavaScript using Mocha and NodeUnit testing JavaScript using Mocha and Node
Unit testing JavaScript using Mocha and Node
 
Unit testing with mocha
Unit testing with mochaUnit testing with mocha
Unit testing with mocha
 

Viewers also liked

TDD Basics with Angular.js and Jasmine
TDD Basics with Angular.js and JasmineTDD Basics with Angular.js and Jasmine
TDD Basics with Angular.js and Jasmine
Luis Sánchez Castellanos
 
Behavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & JasmineBehavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & Jasmine
Remus Langu
 
10 tips google docs in the classroom
10 tips   google docs in the classroom10 tips   google docs in the classroom
10 tips google docs in the classroom
davebeehre
 
Roteiro de 21 dias na Itália
Roteiro de 21 dias na Itália Roteiro de 21 dias na Itália
Roteiro de 21 dias na Itália
Quatro Cantos do Mundo
 
EasyTest Test Automation Tool Introduction
EasyTest Test Automation Tool IntroductionEasyTest Test Automation Tool Introduction
EasyTest Test Automation Tool Introduction
Zhu Zhong
 
Testing angular js
Testing angular jsTesting angular js
Testing angular js
galan83
 
Slaven tomac unit testing in angular js
Slaven tomac   unit testing in angular jsSlaven tomac   unit testing in angular js
Slaven tomac unit testing in angular js
Slaven Tomac
 
Test-Driven Development with TypeScript+Jasmine+AngularJS
Test-Driven Development with TypeScript+Jasmine+AngularJSTest-Driven Development with TypeScript+Jasmine+AngularJS
Test-Driven Development with TypeScript+Jasmine+AngularJS
SmartOrg
 
AngularJS Testing
AngularJS TestingAngularJS Testing
AngularJS Testing
Ahmed Elmehri
 
TDD, unit testing and java script testing frameworks workshop
TDD, unit testing and java script testing frameworks workshopTDD, unit testing and java script testing frameworks workshop
TDD, unit testing and java script testing frameworks workshop
Sikandar Ahmed
 
Angular 2 - What's new and what's different
Angular 2 - What's new and what's differentAngular 2 - What's new and what's different
Angular 2 - What's new and what's different
Priscila Negreiros
 
Automated Testing With Jasmine, PhantomJS and Jenkins
Automated Testing With Jasmine, PhantomJS and JenkinsAutomated Testing With Jasmine, PhantomJS and Jenkins
Automated Testing With Jasmine, PhantomJS and Jenkins
Work at Play
 
Google Analytics Tutorial
Google Analytics TutorialGoogle Analytics Tutorial
Google Analytics Tutorial
Sean Si
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
David Ehringer
 
Introduction to Ionic framework
Introduction to Ionic frameworkIntroduction to Ionic framework
Introduction to Ionic framework
Shyjal Raazi
 
Native vs. Hybrid Applications
Native vs. Hybrid ApplicationsNative vs. Hybrid Applications
Native vs. Hybrid Applications
Cihad Horuzoğlu
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
Cihad Horuzoğlu
 
Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.js
Cihad Horuzoğlu
 
Hybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic FrameworkHybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic Framework
Cihad Horuzoğlu
 

Viewers also liked (19)

TDD Basics with Angular.js and Jasmine
TDD Basics with Angular.js and JasmineTDD Basics with Angular.js and Jasmine
TDD Basics with Angular.js and Jasmine
 
Behavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & JasmineBehavior Driven Development with AngularJS & Jasmine
Behavior Driven Development with AngularJS & Jasmine
 
10 tips google docs in the classroom
10 tips   google docs in the classroom10 tips   google docs in the classroom
10 tips google docs in the classroom
 
Roteiro de 21 dias na Itália
Roteiro de 21 dias na Itália Roteiro de 21 dias na Itália
Roteiro de 21 dias na Itália
 
EasyTest Test Automation Tool Introduction
EasyTest Test Automation Tool IntroductionEasyTest Test Automation Tool Introduction
EasyTest Test Automation Tool Introduction
 
Testing angular js
Testing angular jsTesting angular js
Testing angular js
 
Slaven tomac unit testing in angular js
Slaven tomac   unit testing in angular jsSlaven tomac   unit testing in angular js
Slaven tomac unit testing in angular js
 
Test-Driven Development with TypeScript+Jasmine+AngularJS
Test-Driven Development with TypeScript+Jasmine+AngularJSTest-Driven Development with TypeScript+Jasmine+AngularJS
Test-Driven Development with TypeScript+Jasmine+AngularJS
 
AngularJS Testing
AngularJS TestingAngularJS Testing
AngularJS Testing
 
TDD, unit testing and java script testing frameworks workshop
TDD, unit testing and java script testing frameworks workshopTDD, unit testing and java script testing frameworks workshop
TDD, unit testing and java script testing frameworks workshop
 
Angular 2 - What's new and what's different
Angular 2 - What's new and what's differentAngular 2 - What's new and what's different
Angular 2 - What's new and what's different
 
Automated Testing With Jasmine, PhantomJS and Jenkins
Automated Testing With Jasmine, PhantomJS and JenkinsAutomated Testing With Jasmine, PhantomJS and Jenkins
Automated Testing With Jasmine, PhantomJS and Jenkins
 
Google Analytics Tutorial
Google Analytics TutorialGoogle Analytics Tutorial
Google Analytics Tutorial
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Introduction to Ionic framework
Introduction to Ionic frameworkIntroduction to Ionic framework
Introduction to Ionic framework
 
Native vs. Hybrid Applications
Native vs. Hybrid ApplicationsNative vs. Hybrid Applications
Native vs. Hybrid Applications
 
Modern Frontend
Modern FrontendModern Frontend
Modern Frontend
 
Angular workflow with gulp.js
Angular workflow with gulp.jsAngular workflow with gulp.js
Angular workflow with gulp.js
 
Hybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic FrameworkHybrid Apps with Angular & Ionic Framework
Hybrid Apps with Angular & Ionic Framework
 

Similar to Test-Driven Development of AngularJS Applications

Angularjs Test Driven Development (TDD)
Angularjs Test Driven Development (TDD)Angularjs Test Driven Development (TDD)
Angularjs Test Driven Development (TDD)
Anis Bouhachem Djer
 
Testing JavaScript with Jasmine in Rails Applications
Testing JavaScript with Jasmine in Rails Applications Testing JavaScript with Jasmine in Rails Applications
Testing JavaScript with Jasmine in Rails Applications
Hector Correa
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
David Padbury
 
Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}
.toster
 
Testing in airflow
Testing in airflowTesting in airflow
Testing in airflow
Chandulal Kavar
 
How Testability Inspires AngularJS Design / Ran Mizrahi
How Testability Inspires AngularJS Design / Ran MizrahiHow Testability Inspires AngularJS Design / Ran Mizrahi
How Testability Inspires AngularJS Design / Ran Mizrahi
Ran Mizrahi
 
NodeJS
NodeJSNodeJS
NodeJS
.toster
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
Peter Eisentraut
 
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
 
ReactJS for Beginners
ReactJS for BeginnersReactJS for Beginners
ReactJS for Beginners
Oswald Campesato
 
Unit Testing Front End JavaScript
Unit Testing Front End JavaScriptUnit Testing Front End JavaScript
Unit Testing Front End JavaScript
FITC
 
jQuery Objects
jQuery ObjectsjQuery Objects
jQuery Objects
Steve Wells
 
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven TomacJavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
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
 
Writing testable js [by Ted Piotrowski]
Writing testable js [by Ted Piotrowski]Writing testable js [by Ted Piotrowski]
Writing testable js [by Ted Piotrowski]
JavaScript Meetup HCMC
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
Jie-Wei Wu
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
Ben Lin
 
Unit testing in iOS featuring OCUnit, GHUnit & OCMock
Unit testing in iOS featuring OCUnit, GHUnit & OCMockUnit testing in iOS featuring OCUnit, GHUnit & OCMock
Unit testing in iOS featuring OCUnit, GHUnit & OCMock
Robot Media
 

Similar to Test-Driven Development of AngularJS Applications (20)

Angularjs Test Driven Development (TDD)
Angularjs Test Driven Development (TDD)Angularjs Test Driven Development (TDD)
Angularjs Test Driven Development (TDD)
 
Testing JavaScript with Jasmine in Rails Applications
Testing JavaScript with Jasmine in Rails Applications Testing JavaScript with Jasmine in Rails Applications
Testing JavaScript with Jasmine in Rails Applications
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
 
Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}Matthew Eernisse, NodeJs, .toster {webdev}
Matthew Eernisse, NodeJs, .toster {webdev}
 
Testing in airflow
Testing in airflowTesting in airflow
Testing in airflow
 
How Testability Inspires AngularJS Design / Ran Mizrahi
How Testability Inspires AngularJS Design / Ran MizrahiHow Testability Inspires AngularJS Design / Ran Mizrahi
How Testability Inspires AngularJS Design / Ran Mizrahi
 
NodeJS
NodeJSNodeJS
NodeJS
 
PostgreSQL and PL/Java
PostgreSQL and PL/JavaPostgreSQL and PL/Java
PostgreSQL and PL/Java
 
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
 
ReactJS for Beginners
ReactJS for BeginnersReactJS for Beginners
ReactJS for Beginners
 
Unit Testing Front End JavaScript
Unit Testing Front End JavaScriptUnit Testing Front End JavaScript
Unit Testing Front End JavaScript
 
jQuery Objects
jQuery ObjectsjQuery Objects
jQuery Objects
 
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven TomacJavaCro'14 - Unit testing in AngularJS – Slaven Tomac
JavaCro'14 - Unit testing in AngularJS – Slaven Tomac
 
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
 
Writing testable js [by Ted Piotrowski]
Writing testable js [by Ted Piotrowski]Writing testable js [by Ted Piotrowski]
Writing testable js [by Ted Piotrowski]
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
 
Unit testing in iOS featuring OCUnit, GHUnit & OCMock
Unit testing in iOS featuring OCUnit, GHUnit & OCMockUnit testing in iOS featuring OCUnit, GHUnit & OCMock
Unit testing in iOS featuring OCUnit, GHUnit & OCMock
 

More from FITC

Cut it up
Cut it upCut it up
Cut it up
FITC
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
FITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
FITC
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
FITC
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
FITC
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
FITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
FITC
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
FITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
FITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
FITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
FITC
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
FITC
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
FITC
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
FITC
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
FITC
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
FITC
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
FITC
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
FITC
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
FITC
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
FITC
 

More from FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Recently uploaded

The basics of sentences session 7pptx.pptx
The basics of sentences session 7pptx.pptxThe basics of sentences session 7pptx.pptx
The basics of sentences session 7pptx.pptx
heathfieldcps1
 
BBR 2024 Summer Sessions Interview Training
BBR  2024 Summer Sessions Interview TrainingBBR  2024 Summer Sessions Interview Training
BBR 2024 Summer Sessions Interview Training
Katrina Pritchard
 
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.pptLevel 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Henry Hollis
 
HYPERTENSION - SLIDE SHARE PRESENTATION.
HYPERTENSION - SLIDE SHARE PRESENTATION.HYPERTENSION - SLIDE SHARE PRESENTATION.
HYPERTENSION - SLIDE SHARE PRESENTATION.
deepaannamalai16
 
How to Setup Warehouse & Location in Odoo 17 Inventory
How to Setup Warehouse & Location in Odoo 17 InventoryHow to Setup Warehouse & Location in Odoo 17 Inventory
How to Setup Warehouse & Location in Odoo 17 Inventory
Celine George
 
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptxRESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
zuzanka
 
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptxPrésentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
siemaillard
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
GeorgeMilliken2
 
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
imrankhan141184
 
How to Predict Vendor Bill Product in Odoo 17
How to Predict Vendor Bill Product in Odoo 17How to Predict Vendor Bill Product in Odoo 17
How to Predict Vendor Bill Product in Odoo 17
Celine George
 
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptxBeyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
EduSkills OECD
 
Wound healing PPT
Wound healing PPTWound healing PPT
Wound healing PPT
Jyoti Chand
 
skeleton System.pdf (skeleton system wow)
skeleton System.pdf (skeleton system wow)skeleton System.pdf (skeleton system wow)
skeleton System.pdf (skeleton system wow)
Mohammad Al-Dhahabi
 
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptxChapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Denish Jangid
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
mulvey2
 
Bonku-Babus-Friend by Sathyajith Ray (9)
Bonku-Babus-Friend by Sathyajith Ray  (9)Bonku-Babus-Friend by Sathyajith Ray  (9)
Bonku-Babus-Friend by Sathyajith Ray (9)
nitinpv4ai
 
Pharmaceutics Pharmaceuticals best of brub
Pharmaceutics Pharmaceuticals best of brubPharmaceutics Pharmaceuticals best of brub
Pharmaceutics Pharmaceuticals best of brub
danielkiash986
 
How to deliver Powerpoint Presentations.pptx
How to deliver Powerpoint  Presentations.pptxHow to deliver Powerpoint  Presentations.pptx
How to deliver Powerpoint Presentations.pptx
HajraNaeem15
 
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptxNEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
iammrhaywood
 
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
Nguyen Thanh Tu Collection
 

Recently uploaded (20)

The basics of sentences session 7pptx.pptx
The basics of sentences session 7pptx.pptxThe basics of sentences session 7pptx.pptx
The basics of sentences session 7pptx.pptx
 
BBR 2024 Summer Sessions Interview Training
BBR  2024 Summer Sessions Interview TrainingBBR  2024 Summer Sessions Interview Training
BBR 2024 Summer Sessions Interview Training
 
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.pptLevel 3 NCEA - NZ: A  Nation In the Making 1872 - 1900 SML.ppt
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.ppt
 
HYPERTENSION - SLIDE SHARE PRESENTATION.
HYPERTENSION - SLIDE SHARE PRESENTATION.HYPERTENSION - SLIDE SHARE PRESENTATION.
HYPERTENSION - SLIDE SHARE PRESENTATION.
 
How to Setup Warehouse & Location in Odoo 17 Inventory
How to Setup Warehouse & Location in Odoo 17 InventoryHow to Setup Warehouse & Location in Odoo 17 Inventory
How to Setup Warehouse & Location in Odoo 17 Inventory
 
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptxRESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
RESULTS OF THE EVALUATION QUESTIONNAIRE.pptx
 
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptxPrésentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
Présentationvvvvvvvvvvvvvvvvvvvvvvvvvvvv2.pptx
 
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
What is Digital Literacy? A guest blog from Andy McLaughlin, University of Ab...
 
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
Traditional Musical Instruments of Arunachal Pradesh and Uttar Pradesh - RAYH...
 
How to Predict Vendor Bill Product in Odoo 17
How to Predict Vendor Bill Product in Odoo 17How to Predict Vendor Bill Product in Odoo 17
How to Predict Vendor Bill Product in Odoo 17
 
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptxBeyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptx
 
Wound healing PPT
Wound healing PPTWound healing PPT
Wound healing PPT
 
skeleton System.pdf (skeleton system wow)
skeleton System.pdf (skeleton system wow)skeleton System.pdf (skeleton system wow)
skeleton System.pdf (skeleton system wow)
 
Chapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptxChapter wise All Notes of First year Basic Civil Engineering.pptx
Chapter wise All Notes of First year Basic Civil Engineering.pptx
 
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptxC1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
C1 Rubenstein AP HuG xxxxxxxxxxxxxx.pptx
 
Bonku-Babus-Friend by Sathyajith Ray (9)
Bonku-Babus-Friend by Sathyajith Ray  (9)Bonku-Babus-Friend by Sathyajith Ray  (9)
Bonku-Babus-Friend by Sathyajith Ray (9)
 
Pharmaceutics Pharmaceuticals best of brub
Pharmaceutics Pharmaceuticals best of brubPharmaceutics Pharmaceuticals best of brub
Pharmaceutics Pharmaceuticals best of brub
 
How to deliver Powerpoint Presentations.pptx
How to deliver Powerpoint  Presentations.pptxHow to deliver Powerpoint  Presentations.pptx
How to deliver Powerpoint Presentations.pptx
 
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptxNEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
NEWSPAPERS - QUESTION 1 - REVISION POWERPOINT.pptx
 
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
BÀI TẬP DẠY THÊM TIẾNG ANH LỚP 7 CẢ NĂM FRIENDS PLUS SÁCH CHÂN TRỜI SÁNG TẠO ...
 

Test-Driven Development of AngularJS Applications