AngularJS测试是否已调用$ scope方法

Mat*_*ima 2 jasmine angularjs

我有一个方法叫做$scope.openGroupInbox()哪个$scope.init()和其他东西.我想测试是否$scope.init()已被调用.所以我这样做:

it('call init', function () {
    $scope.openGroupInbox(3);
    expect($scope.init(3)).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

Mar*_*rry 7

.toHaveBeenCalled()测试中调用函数之前.您需要注册一个间谍,以跟踪对该$scope.init()功能的调用.

你可以在beforeEach下面这样做.

beforeEach(function() {
    spyOn($scope, 'init');
});
Run Code Online (Sandbox Code Playgroud)

然后,当您的测试运行时,您应该正确地获知该$scope.init()功能是否已成功调用.

您还需要将您更改expect为:

expect($scope.init).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)

要么

expect($scope.init).toHaveBeenCalledWith(3);
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.