如何测试Angular应用程序?

时间:2014-05-21 00:52:09

标签: angularjs

对于简单的应用程序,例如“Hello World”,我在哪里编写测试。

我创建了一个plnkr。 http://plnkr.co/edit/M0GAIE837G3s1vNwTyK8?p=info

现在这是一个非常简单的plnkr,除了显示Hello World之外什么都不做。 现在,如果我想为此应用程序编写测试,即MainCtrl ..我在哪里插入?

1 个答案:

答案 0 :(得分:0)

使用Angular-Karma-Jasmine进行测试:

  1. 您需要安装nodejs,karma在节点上运行

  2. 您需要从命令窗口安装来自Node Packaged Modules的业力执行:

    npm install -g karma

  3. 如果您打算使用Chrome和Firefox运行此功能,并且您在Windows上运行此功能,则需要添加2 environment variables

  4.    CHROME_BIN = [Crome installation path/chrome.exe]
       FIREFOX_BIN =[Firefox installation path/firefox.exe]
    

    4.执行后,使用命令窗口返回项目文件夹:

    karma init

    只需按Enter键直到完成;底线,这将创建一个名为:

    karma.config.js

    的文件

    在我的项目中,这个文件看起来像这样,你的文件可能会包含一些有关不同设置的有用评论:

        module.exports = function(config) {
          config.set({    
            basePath: '',    
            frameworks: ['jasmine'],    
            files: [
              '../app/*.js',
              '../app/lib/angular.js',
              '../app/lib/angular-route.min.js',
              '../app/lib/angular-mocks.js',         
              '../app/app.js',
              'controllers/*.js',
              'services/*.js',
            ],    
            exclude: [
            ],    
            reporters: ['progress'],    
            port: 9876,    
            colors: true,    
            logLevel: config.LOG_INFO,    
            autoWatch: true,    
            browsers: ['Chrome','Firefox'],
            captureTimeout: 60000,
            singleRun: false
          });
        };
    

    重要提示:请确保在配置中包含角度模拟,inject功能在该模块上。

    5.返回到您的命令窗口,浏览karma.config.js文件所在的位置并执行:

    karma start

    此时你可以开始用茉莉花来编写测试。

    您的控制器的简单茉莉花测试将是:

    describe('MainCtrl', function() {
        var $scope, $rootScope, createController;
    
        beforeEach(inject(function($injector) {
            $rootScope = $injector.get('$rootScope');
            $scope = $rootScope.$new();
    
    
        var $controller = $injector.get('$controller');
    
            createController = function() {
                return $controller('MainCtrl', {
                    '$scope': $scope
                });
            };
        }));
    
        it('should have a...', function() {
            var controller = createController();
    // do your testing here...
    
        });
    });