【问题标题】:AngularJS - $emit test case in KarmaAngularJS - Karma 中的 $emit 测试用例
【发布时间】:2018-02-22 22:29:09
【问题描述】:

我是新手,正在做我的第一次 Karma 测试,并已将 this post 推荐给 $emit 测试用例。我在理解这个概念时遇到了一些麻烦。

这是我的代码:

ctrl.toggleUserMode = function(pUserId, pUserName, userModeFlag) {
  $scope.$emit('userModeToggleEvent', userModeFlag);
}

对不起,如果我的问题看起来很愚蠢。谁能解释我应该在.toHaveBeenCalledWith 方法中提供什么argsMY_EVENT_ID

spyOn(scope, "$emit")
//run code to test
expect(scope.$emit).toHaveBeenCalledWith("MY_EVENT_ID", other, possible, args);

【问题讨论】:

    标签: angularjs karma-runner karma-jasmine


    【解决方案1】:

    在您的测试中,您将设置间谍并调用被测代码,然后断言您的事件是使用被测代码应该使用的任何参数发出的。

    // Arrange
    spyOn(scope, "$emit");
    var pUserId = "test userId";
    var pUserName= "test userName";
    var userModeFlag = true;
    
    // Act
    ctrl.toggleUserMode(pUserId, pUserName, userModeFlag);
    
    // Assert
    expect(scope.$emit).toHaveBeenCalledWith("userModeToggleEvent", userModeFlag);
    

    【讨论】:

      猜你喜欢
      • 2021-03-24
      • 2014-05-04
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2013-05-15
      相关资源
      最近更新 更多