jasmine-angular: $inject other service

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() {
  function MyDataService() {
    this.getName = function() {
      return 'bob';
    }
  }

  function MyUpperCaseService(MyDataService) {
    this.getUppercaseName = function() {
      return MyDataService.getName().toUpperCase();
    }
  }


  angular.module('MyModule', [])
    .service('MyDataService', MyDataService)
    .service('MyUpperCaseService', ['MyDataService', MyUpperCaseService]);

})();


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

  beforeEach(inject(function(_MyDataService_, _MyUpperCaseService_) {
    MyDataService = _MyDataService_;
    MyUpperCaseService = _MyUpperCaseService_;
  }));

  it("spyOn() and return 'alice", function() {
    spyOn(MyDataService, 'getName').and.returnValue('alice');
    expect(MyUpperCaseService.getUppercaseName()).toBe('ALICE');
  });


});