使用Karma进行角度单元测试

时间:2014-03-31 18:12:02

标签: angularjs unit-testing testing karma-runner

我有一个角度应用程序,我正在开发测试。在app.js文件中我有这样的东西:

angular.module('app',
[
'app.config',
'app.factories',
'app.directives',
'app.controllers'
]
);

对于我想要进入该控制器模块的每个控制器,我基本上都是这样定义的:

angular.module('app.controllers').controller("controller1" ,[],function(){
bleh bleh bleh
code code code 
})

这里的目标是用业力编写一些单元测试但不幸的是,我能够弄清楚如何做的最多是确保我的主模块的依赖性加载。

我需要弄清楚的是使用我所拥有的结构,我如何(a)创建测试以确保我的控制器实际存在,以及(b)测试控制器内部的东西

我尝试了多种方法但似乎无法在我的测试框架中实例化控制器。

1 个答案:

答案 0 :(得分:0)

您可以像这样测试控制器是否存在:

describe("SomeControllerTest", function () {
    var scope, ctrl;

    beforeEach(module('myApp'));

    beforeEach(inject(function($rootScope, $controller) {
        scope = $rootScope.$new();
        ctrl = $controller('SomeController', {
            $scope: scope
        });
    }));

    it("should be defined", function () {
        expect(ctrl).toBeDefined();
    });
});

小心你的控制器语法。第二个参数是一个以函数结尾的字符串数组,该函数不是第三个参数。

app.controller('MyController', [ '$log', function MyController($log) {} ]);