如何在不同控制器的$ scope中测试函数?

时间:2015-04-25 13:19:25

标签: javascript angularjs jasmine

我正在使用Jasmine来测试我的AngularJS应用程序。我有一个Authenticaiton控制器,它调用我在应用程序控制器范围内定义的函数。所以:

1。 AppController的

$scope.setUser = function() {}

2。 AuthenticationController

$scope.setUser(User);

我正在测试AuthenticationController,而setUser()不在scope的{​​{1}}内。如何从AuthenticationController注入范围/功能?

错误消息:

AppController

我应该嘲笑整个功能吗?结构有臭吗?最好的方法是什么?

编辑: 在真实的应用程序中,AuthenticationController被注入我的仪表板应用程序。

AuthenticationController:

TypeError: $scope.setUser is not a function

控制板:

angular
  .module( 'authentication', [])
  .controller('AuthenticationController', AuthenticationController);

AuthenticationController.$inject = ['$scope', '$rootScope', 'AUTH_EVENTS', 'AuthenticationService'];

信息 我的问题中的名称已更改,以便于理解。

1 个答案:

答案 0 :(得分:0)

将$ rootScope注入您的控制器。

  1. AppController:

    $ rootScope.setUser = function(){}

  2. AuthenticationController

    $ rootScope.setUser();