24. Misko Hevery
âAgile Coach at Google where he is
responsible for coaching Googlers to
maintain the high level of automated
testing cultureâ
- misko.hevery.com/about/
30. DI as Pattern
function Car() {
var wheel = new Wheel();
var engine = Engine.getInstance();
var door = app.get(âDoorâ);
!
this.move = function() {
engine.on();
wheel.rotate();
door.open();
}
}
31. DI as Pattern
function Car() {
var wheel = new Wheel();
var engine = Engine.getInstance();
var door = app.get(âDoorâ);
!
this.move = function() {
engine.on();
wheel.rotate();
door.open();
}
}
32. DI as Pattern
function Car(wheel, engine, door) {
this.move = function() {
engine.on();
wheel.rotate();
door.open();
}
}
33. The problem
function main() {
var fuel = new Fuel();
var electricity = new Electricity();
var engine = new Engine(fuel);
var door = new Door(Electricity);
var wheel = new Wheel();
var car = new Car(wheel, engine, door);
car.move();
}
34. The problem
function main() {
var fuel = new Fuel();
var electricity = new Electricity();
var engine = new Engine(fuel);
var door = new Door(Electricity);
var wheel = new Wheel();
var car = new Car(wheel, engine, door);
car.move();
}
35. The problem
function main() {
var fuel = new Fuel();
var electricity = new Electricity();
var engine = new Engine(fuel);
var door = new Door(Electricity);
var wheel = new Wheel();
var car = new Car(wheel, engine, door);
car.move();
}
36. The problem
function main() {
var fuel = new Fuel();
var electricity = new Electricity();
var engine = new Engine(fuel);
var door = new Door(Electricity);
var wheel = new Wheel();
var car = new Car(wheel, engine, door);
car.move();
}
37. DI as framework
function main() {
var injector = new Injector(âŠ.);
var car = injector.get(Car);
car.move();
}
38. DI as framework
function main() {
var injector = new Injector(âŠ.);
var car = injector.get(Car);
car.move();
}
Car.$inject = [âwheelâ, âengineâ, âdoorâ];
function Car(wheel, engine, door) {
this.move = function() {
âŠ
}
}
39. DI as framework
function main() {
var injector = new Injector(âŠ.);
var car = injector.get(Car);
car.move();
}
Car.$inject = [âwheelâ, âengineâ, âdoorâ];
function Car(wheel, engine, door) {
this.move = function() {
âŠ
}
}
50. Directive Test
it(âCheck launchpad was installed', function() {
var element = $compile(â<rocket-launch-pad></
rocket-launch-pad>â)($rootScope);
!
expect(element.html()).toContain("Rocket here");
});
51. Filter Test
.ïŹlter('i18n', function() {
return function (str) {
return translations.hasOwnProperty(str)
&& translations[str]
|| str;
}
})
var length = $ïŹlter('i18n');
expect(i18n(âciaoâ)).toEqual(âhiâ);
expect(length(âabcâ)).toEqual(âabc');