AngularJS - $在Karma中发出测试用例

时间:2018-02-22 22:29:10

标签: angularjs karma-runner karma-jasmine

我是新手,正在进行第一次Karma测试,并已将this post提交给$emit测试用例。我对理解这个概念有些困难。

这是我的代码:

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

抱歉,如果我的问题看起来很愚蠢。任何人都可以解释我应该在args方法中提供的MY_EVENT_ID.toHaveBeenCalledWith

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

1 个答案:

答案 0 :(得分:0)

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

// 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);