16

ローカル変数を持つコントローラーがあります

function IndexCtrl($scope) {
  var pagesById = [];
  loadPages();

  // snip

  function loadPages() {
    // pagesById gets populated
  }

  // snip
}

pagesById が正しく入力されていることをテストしたいのですが、it() から取得する方法がわかりません。この変数を $scope に入れる必要はありません。これは情報の中間セットに過ぎないため、$scope に追加することを避けることができれば理想的です。

it('scope.pages should populated based on pages data.', function() {
    $httpBackend.flush();
    expect(pagesById).toEqualData(mock_page_results);
});

私にくれます

ReferenceError: pagesById is not defined

$scope にアタッチする以外にオプションはありますか?

4

2 に答える 2

16

ジャスミン仕様で、最初にコントローラーを作成します。

var ctrl;

beforeEach(inject(function($rootScope, $controller) {
  scope = $rootScope.$new();
  ctrl = $controller('myController', {
     $scope: scope
  });
}));

次に、を実行してそのプロパティにアクセスできますctrl.pagesById。もちろん、実行するのではなく、コントローラーでvar pagesById使用する必要があります。this.pagesById

于 2013-01-10T23:36:13.177 に答える