角度单元测试控制器初始化?

时间:2016-11-24 09:47:50

标签: angularjs unit-testing controller karma-runner

我环顾四周,无法找到我要找的答案,所以我会问这里。 我首先说,我怀疑这可能是一个不好的做法,如果是这样,那么任何关于如何最好地接近这个并且能够进行单元测试的建议将不胜感激。我仍然在角度(和单元测试)的学习曲线上。

非常简单,我有一个控制器,如下所示,它在示波器上设置了一些功能,但在初始化过程中也调用了一些工厂(不是通过函数)。

(function() {
'use strict';

app.controller('NavController', navController);

function navController($rootScope, $scope, $location, $window, NavFactory) {

    $scope.menuConfig = {};
    $scope.menuItems = [];
    $scope.isActive = isActive;
    $scope.toggleBurgerMenu = toggleBurgerMenu;
    $scope.toggleDeviceSettings = toggleDeviceSettings;

    NavFactory.GetMenuItems().then(onGetMenuItems, $scope.onAPIError);


    function onGetMenuItems(response) {
        $scope.moduleConfig = response.moduleConfig;
        $scope.menuItems = response.menuItems;
    }

    function isActive(viewLocation) {
        ...
    }

    function toggleBurgerMenu() {
        ...
    }

    function toggleDeviceSettings() {
        ...
    }
}

})();

如您所见,在控制器初始化期间调用了NavFactory.GetMenuItems().then(onGetMenuItems, $scope.onAPIError);。如何在控制器加载时测试NavFactory.GetMenuItems()被称为

我想过把它放在init()函数中,但是为了测试它,我需要将init()放在范围内吗?为了从Karma测试套件中调用它?但我不需要将此功能公开,因为它只是从控制器调用。

有没有办法测试它被这样调用?是否有更好的接近?

在任何人以这种方式重新激活我之前,这就是我在培训课程中的表现方式,所以这就是我学到的方式(不是说它&#39) ; s右)。

最后,我只想检查控制器加载时是否使用属性和数据设置了$scope.moduleConfig$scope.menuItems

0 个答案:

没有答案