title: TypeError: undefined is not a constructor
body: <p>I'm very new to Angular and I'm trying to figure much of this out still.  I'm writing some tests using Angular 1.5.8 which I generated from the Yeoman Generator.</p>
  
  <p>Specifically, I'm trying to figure out how to manipulate $httpBackend results (I'm not sure if that's important or not)...</p>
  
  <p>In my app.js file I have the following code:</p>
  
  <pre><code>.run(['$rootScope', '$location', 'breadcrumbService', function ($rootScope, $location, breadcrumbService) {
      $rootScope.$on('$viewContentLoaded', function () {
          jQuery('html, body').animate({scrollTop: 0}, 200);
      });
  
      $rootScope.isEditMode = false;
      $rootScope.$on('$stateChangeSuccess', function () {
          // ------------ this next line is failing -----------
          $rootScope.isEditMode = $location.path().toLowerCase().endsWith('/edit') || $location.path().toLowerCase().endsWith('/new');
      });
  
      $rootScope.parseJson = function (value) {
          return angular.fromJson(value);
      };
  
      $rootScope.bc = breadcrumbService;
  
      $rootScope.title = "";
  }])
  </code></pre>
  
  <p>The line about halfway down (where I added the comment) is failing.  Specifically, the <code>endsWith</code> function is failing (toLower is fine), with this error:</p>
  
  <pre><code>PhantomJS 2.1.1 (Windows 8 0.0.0) Service: breadcrumbService should return breadcrumb label in json format FAILED
          TypeError: undefined is not a constructor (evaluating '$location.path().toLowerCase().endsWith('/edit')') in app/scripts/app.js (line 44)
          app/scripts/app.js:44:72
          $broadcast@bower_components/angular/angular.js:18005:33
          bower_components/angular-ui-router/release/angular-ui-router.js:3353:32
          processQueue@bower_components/angular/angular.js:16383:30
          bower_components/angular/angular.js:16399:39
          $eval@bower_components/angular/angular.js:17682:28
          $digest@bower_components/angular/angular.js:17495:36
          $apply@bower_components/angular/angular.js:17790:31
          done@bower_components/angular/angular.js:11831:53
          handleResponse@bower_components/angular-mocks/angular-mocks.js:1368:17
          flush@bower_components/angular-mocks/angular-mocks.js:1808:26
          test/spec/services/breadcrumbservice.js:33:27
          invoke@bower_components/angular/angular.js:4718:24
          workFn@bower_components/angular-mocks/angular-mocks.js:3085:26
  </code></pre>
  
  <p>Here is my test code (some junk modified from different examples - just trying to get it to work):</p>
  
  <pre><code>'use strict';
  
  describe('Service: breadcrumbService', function () {
  
      // load the service's module
      beforeEach(module('myModule'));
  
      var $httpBackend, $rootScope, createController, authRequestHandler;
      beforeEach(inject(function($injector) {
  
          $httpBackend = $injector.get('$httpBackend');
          console.log('Is null? '+ ($httpBackend == null));
          $httpBackend.whenGET(/views\/.*/).respond(200, [{}, {}, {}]);
  
          authRequestHandler = $httpBackend.when('GET', '/api/v1/SiteStagings')
              .respond({userId: 'userX'}, {'A-Token': 'xxx'});
  
          // Get hold of a scope (i.e. the root scope)
          $rootScope = $injector.get('$rootScope');
          $httpBackend.flush();
      }));
  
      // instantiate service
      var breadcrumbService;
      beforeEach(inject(function (_breadcrumbService_) {
          breadcrumbService = _breadcrumbService_;
      }));
  
      it('svc should exist', function () {
          expect(!!breadcrumbService).toBe(true);
      });
  
      it('should return breadcrumb label in json format', function () {
          var result = breadcrumbService.getFromCache('site', 'SiteGroupStagings', 46, 'SiteGroupDesc');
          console.log(result);
          expect(!!result).toBe(true);
  
      });
  });
  </code></pre>
  
  <p>I don't doubt that I'm doing something wrong here, I just can't quite understand what it is.  What does this error really mean and why does it not like my call to <code>endsWith</code>?</p>
  
  <p>Thanks</p>