angularjs + unit test + jasmine + karma.conf.js

时间:2015-01-11 04:49:10

标签: angularjs karma-jasmine

我是使用angularjs的新手。最近我被要求用Jasmine进行单元测试angularjs控制器,Jasmine是另一个不为人知的框架。我写了几个简单的案例,在WebStorm中一起运行这些东西,但无论我怎么努力,案例总是失败。最让我感到沮丧的是,他们似乎失败的原因与我无法解决的原因相同:(

这是我的代码:

控制器测试:

/*home.js*/
var app = angular.module('Application', ['ngResource']);

app.controller('MainCtrl', function($scope) {
    $scope.text = 'Hello World!';
    $scope.user = function(){
        return {
            name:'Robin',
            age:32
        }
    }
});

测试用例:

/*home.tests.js*/

describe('MainCtrl', function(){
    var scope;

    beforeEach(angular.mock.module('Application'));
    // Here $rootScope, $controller are always undefined...so the function quits before scope has been initialized.
    beforeEach(angular.mock.inject(function($rootScope, $controller){

        scope = $rootScope.$new();

        $controller('MainCtrl', {$scope: scope});
    }));

    it('should have scope defined', function () {
        expect(scope).toBeDefined();
    });

    it('should have variable text = "Hello World!"', function(){
        expect(scope.text).toBe('Hello World!');
    });
});

karma.conf.js(部分内容)

    files: [

      'Scripts/jquery-1.10.2.min.js',
      'allScripts/angular-1.3.0/angular.min.js',
      'allScripts/angular-1.3.0/angular-mocks.js',

      'Scripts/wdso/home.js',
      'UnitTest/JsTests/home.tests.js',
    ],

问题似乎是$ injector一直未定义,第二个foreach块永远不会成功运行。

现在这个问题花了我2天时间,让我发疯了。我在网上做了很多搜索,但没有找到任何帮助。有人可以告诉我我的代码有什么问题,比如错过任何引用吗?任何建议都将受到欢迎,非常感谢。谢谢!

0 个答案:

没有答案