イベントによって変更されるスコープ変数をテストするにはどうすればよいですか?
これは私がテストしたいコードのビットです:
$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 をユニット テストするにはどうすればよいですか?」とほぼ同じです。、それで閉じます。