angularjs - AngularJS 上的单元测试 $scope.$

标签 angularjs unit-testing karma-jasmine

大家好,我正在努力测试 $.on 函数,我正在寻找对此的任何建议或帮助:

Controller

  $scope.$on("sampleFilesSelected", function(event, args) {
                $scope.sampleFiles = args.newSampleFiles;
            }); 

规范

describe('Testing a $.on', function() {
  var $scope = null;
  var ctrl = null;


  beforeEach(module('test'));

  it('should invoke myEvent when "myEvent" broadcasted', inject(function($rootScope, $controller) {
    $scope = $rootScope.$new();

    ctrl = $controller('MainCtrl', {
      $scope: $scope
    });

    $scope.$broadcast('myEvent');
    expect($scope.sampleFilesSelected).toBe(true);
  }));
});

错误

TypeError: Unable to get property 'newSampleFiles' of undefined or null reference
        undefined

最佳答案

您应该向您的事件传递一个值,在断言之前调用 $digest :

$scope.$broadcast('myEvent', { 'newSampleFiles' : true } );
$scope.$digest();
expect($scope.sampleFilesSelected).toBe(true);

关于angularjs - AngularJS 上的单元测试 $scope.$,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179797/

相关文章:

jquery - Angular 动画

javascript - 如何使用远程脚本正确加载 Cordova 和 Angularjs 混合应用程序

java - 使用 Java 对 Google Wave 机器人进行单元测试

android - 我如何测试没有为非模拟对象调用方法?

python - 在 VSCode 中运行当前 Python 单元测试的快捷方式

angularjs - 测试指令链接功能,监视 $watch?

javascript - Jasmine 测试,addEventListener

angularjs - Backbone如何观察数据变化?

typescript - 可以将 webpack 4 模块配置为允许 Jasmine 监视其成员吗?

javascript - Angular-formly:为什么指令的行为与类型不同?