为angularjs应用程序编写Karma测试

时间:2014-11-25 21:02:26

标签: javascript angularjs testing karma-runner

我正在试图弄清楚如何编写一些简单的Karma测试,但是我在语法方面遇到了一些麻烦而只是理解了框架。这是一个我想为其编写测试的控制器:

myApp.controller('menuController', ['$rootScope', '$parse', '$attrs', '$scope', 'Menu', 'Track', '$state',
    function($rootScope, $parse, $attrs, $scope, Menu, Track, $state){
        $scope.Menu = Menu;
        $rootScope.$on("click",function() {
            Menu.active = false;
        });
        $scope.click = function(button) {
            Track.event(2, button + "_button_pressed", true);
        };
    }])

这是我为这个控制器编写的一个简单测试,我试图测试菜单按钮点击时的活动状态变化:

describe('Controller: menuController', function() {
    //load the module with menuController
    beforeEach(module('myApp'));

    var MainCtrl,
        scope;

    // Initialize the controller and a mock scope
    beforeEach(inject(function ($controller, $rootScope) {
        scope = $rootScope.$new();
        MainCtrl = $controller('menuController', {
            $scope: scope
        });
    }));

    //put test here
    it ('should change $scope.Menu.active to true when button is clicked', function() {
        expect(scope.Menu.active).toBeFalse();
        scope.click();
        expect(scope.Menu.active).toBeTrue();
    })


});

运行Grunt测试后,测试失败,其返回的错误之一是:

TypeError: 'undefined' is not an object (evaluating 'scope.Menu')

我希望有人能告诉我自己做错了什么,或者告诉我如何为上面显示的控制器编写一个简单的业力测试。

提前致谢!

0 个答案:

没有答案