jasmine + angular ex 7

by ronapelbaum

HTML

<script src="https://jasmine.github.io/2.4/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.4/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.4/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.4/lib/jasmine.css">
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="https://code.angularjs.org/1.4.9/angular-mocks.js"></script>

JavaScript

//--------------BL------------
(function() {

  var LastNameService = function() {
    var start = Date.now();
    for (var i = 0; i < 100000000; i++);
    console.log("LastNameService creation: ", (Date.now() - start), "ms");

    this.getLastName = function(firstName) {
      switch (firstName) {
        case "Bob":
          return "Marley";
        case "Phill":
          return "Collins";
      }
    }
  };

  var Greeter = function(dataService) {
    function greet(name) {
      return "Hello " + name + " " + dataService.getLastName(name);
    }
    this.greet = greet;
  };

  //OtherModule
  angular.module('OtherModule', [])
    .service('LastNameService', LastNameService);

  //MyModule
  angular.module('MyModule', ['OtherModule'])
    .service('GreeterService', ['LastNameService', Greeter]);
})();

//--------------specs------------
describe("MyController test suite", function() {
  var GreeterService;
  beforeEach(module('MyModule'));

  beforeEach(inject(function(_GreeterService_) {
    GreeterService = _GreeterService_;
  }));

  it("should greet corretly", inject(function(LastNameService) {
    //NOTE - we are inside a local 'inject'
    spyOn(LastNameService, 'getLastName').and.returnValue('Dylen')

    expect(GreeterService.greet('Bob')).toBe('Hello Bob Dylen');
  }));

});