1

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

見つからないテンプレートへの location.path 参照を含むルーティング ディレクティブをテストしています。そう....

モック構成された $routeProvider を使用してルーティング テストをモックしたいのですが、カルマ/ジャスミンで $routeProvider を取得するにはどうすればよいですか?

次に、ベストプラクティスで説明されているspyOnモックアプローチを試しました.$location.path().toBe('/path')を期待できる構文はありますか?

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

そして、私はできるかどうか疑問に思っていました

4

1 に答える 1

4

$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');
  });

ただし、Angular の $templateCache にディレクティブを事前設定することで、テンプレートを読み込むことができます。Karma はng-html2js-preprocessorを使用します。それはあなたの問題を助けることができますか?

于 2013-10-29T11:40:56.330 に答える