1

イベントによって変更されるスコープ変数をテストするにはどうすればよいですか?

これは私がテストしたいコードのビットです:

$rootScope.$on('someEvent', function(event, option) {
  $scope.option = option;
});

私はやろうとしています

describe("`someEvent`", function() {
  var option = 'Title',

  beforeEach(inject(function($injector) {
    $scope.$emit('someEvent', option);
  }));

  it("updates option", function() {
    expect($scope.option).toBe(option);
  });
});

私も試してみました$timeout

describe("`someEvent`", function() {
  var option = 'Title',
    $timeout;

  beforeEach(inject(function($injector) {
    $timeout = $injector.get('$timeout');
    $timeout(function() {
      $scope.$emit('someEvent', option);
    });
    $timeout.flush();
  }));

  it("updates option", function() {
    expect($scope.option).toBe(option);
  });
});

describe("`someEvent`", function() {
  var option = 'Title';

  beforeEach(inject(function($injector) {
    var $rootScope = $injector.get('$rootScope');

    $rootScope.$broadcast('someEvent', option);
  }));

  it("updates option", function() {
    expect($scope.option).toBe(option);
  });
});

しかし、それらはすべてメッセージで失敗しますExpected undefined to be 'Title'.

非同期だからだと思いますが、他の構文が必要です。ジャスミンを使用しています。

何か案は?


編集:より多くの試行で更新


修正:describeブロックが$scope設定されていない間違った領域で宣言されたためでした。「Angularjs でスコープ変数を変更する $scope.$emit をユニット テストするにはどうすればよいですか?」とほぼ同じです。、それで閉じます。

4

0 に答える 0