1

http://blog.artlogic.com/2013/05/06/angularjs-best-practices-ive-been-doing-it-wrong-part-2-of-3/

I am testing a routing directive with location.path refs to templates that cannot be found. So....

I want to mock a routing test with a mock configured $routeProvider, how to get the $routeProvider in karma/jasmine?

then I tried the spyOn mock approach described in best-practice, is there a syntax for which I can expect the $location.path().toBe('/path')?

spyOn($location, 'path').andCallFake(new LocationMock().path);

and I was wondering if I could

1 Answer 1

4

I created a fiddle which demonstrates mocking $location.

  app.controller('testcont', function($scope, $location) {
      $scope.path = $location.path();
  });
  ...
  beforeEach(inject(function($controller, $rootScope, $location){    
     scope = $rootScope.$new();
     spyOn($location, 'path').andReturn('Fake location');
     $controller('testcont', {$scope:scope});
  }));
  ...
  it('should spy on $location', function($location){
     expect(scope.path).toBe('Fake location');
  });

However templates can be loaded by prepopulating Angular's $templateCache with the directive. Karma uses the ng-html2js-preprocessor. Could that help your problem?

Sign up to request clarification or add additional context in comments.

1 Comment

well the key is that I need to reroute $routeProvider.when.... in a routing test.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.