1

SEARCH_URL注入された定数 (つまり、) を使用してディレクティブをテストしようとしています。

.directive('autocomplete', [
  "$rootScope",
  "SEARCH_URL",
  function (
    $rootScope,
    SEARCH_URL
  ) {
  // ...
});

このテストで:

describe('autocomplete directive', function () {
  "use strict";

  var element, scope;

  beforeEach(module('nav'));

  beforeEach(function() {
    inject(function($compile, $rootScope) {
      var linkingFn = $compile("<div ng-model='search' autocomplete></div>");
      scope = $rootScope;
      element = linkingFn(scope);
    });
  });

  it('selection resets autocomplete matches', function() {
    scope.select({ Title: "Something" });
    expect(scope.autocompleteMatches.length).toEqual(0);
  });
});

ただし、テストで定数を挿入する場所がわかりません。テストを実行すると、このエラーが発生します

PhantomJS 1.9 (Mac) autocomplete directive selection resets autocomplete matches FAILED
    Error: Unknown provider: SEARCH_URLProvider <- SEARCH_URL <- autocompleteDirective
        at /Users/ttt/Work/Dev/az/az-search-html/app/public/vendor/angular-unstable/angular.min.js:29

コントローラーの別のテストでは、次のような追加のパラメーターを挿入できます

$controller('ArticleCtrl', params);

ディレクティブに対してそれを行うにはどうすればよいですか?

4

1 に答える 1

2

angular.mocks を使用して、次のように定数をスタブできます。

  beforeEach(function() {
    module(function($provide) {
      $provide.constant('SEARCH_URL', 'my seach url');
    });
  });
于 2013-08-30T03:18:31.593 に答える