如何测试被事件更改的范围变量?
这是我要测试的代码:
$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
没有设置。与如何对 $scope.$emit 更改 angularjs 中的范围变量进行单元测试几乎相同?,所以关闭它。