基于Karma和Jasmine的AngularJS测试

1:工程目录结构

[email protected]:karma-t01$ tree -L 3
.
├── client
│   ├── app
│   │   └── user
│   ├── bower_components
│   │   ├── angular
│   │   ├── angular-mocks
│   │   └── angular-resource
│   └── bower.json
├── karma.conf.js
└── readme

7 directories, 3 files

项目说明:使用bower进行js包管理,使用Karma及Jasmine完成基本测试.

使用bower在线安装工程所依赖的包:

[email protected]:client$ bower install angular[email protected]:client$ bower install angular-resource[email protected]:client$ bower install angular-mocks

user目录结构:

[email protected]:app$ tree -L 1 user/
user/
├── user.js
├── users.json
└── user.test.js

0 directories, 3 files

2:user.js

/** * Created by y on 15-11-24. */‘use strict‘;

var app = angular.module(‘Application‘, [‘ngResource‘]);

app.factory(‘UserFactory‘, function($resource){    return $resource(‘users.json‘,{},{        query:{method:‘GET‘,isArray:true}    });});

app.controller(‘MainCtrl‘, function($scope,UserFactory) {    $scope.title = ‘Hello AngularJS In Action!‘;    $scope.users = UserFactory.query();});

3:user.test.js

/** * Created by y on 15-11-24. */‘use strict‘;

describe(‘MainCtrl‘,function(){    var scope,httpBackend;

    beforeEach(angular.mock.module(‘Application‘));

    beforeEach(angular.mock.inject(function($rootScope,$controller,_$httpBackend_){

        httpBackend = _$httpBackend_;        httpBackend.when(‘GET‘,‘users.json‘)            .respond([                {                    name:‘张三‘, age:25                },                {                    name:‘李四‘, age:24                },                {                    name:‘王五‘, age:27                }            ]);

        scope = $rootScope.$new();

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

    //test begin    it(‘should have variable title="Hello AngularJS In Action!"‘,function(){        expect(scope.text).toBe(‘Hello AngularJS In Action!‘);    });

    //test begin    it(‘should fetch list of users‘, function(){        httpBackend.flush();

        expect(scope.users.length).toBe(3);        expect(scope.users[0].name).toBe(‘张三‘);    });

});

4:users.json

[  {    name:‘张三‘, age:25  },  {    name:‘李四‘, age:24  },  {    name:‘王五‘, age:27  }]

5:进行Karma文件配置,Karma默认使用Jasmine作为测试框架.

切换到你想要放置配置文件的目录,然后在终端中输入下面的命令来创建配置文件:
[email protected]:karma-t01$ karma init karma.conf.js

配置信息如下:主要进行files节点配置

// Karma configuration// Generated on Tue Nov 24 2015 23:12:58 GMT+0800 (CST)

module.exports = function(config) {  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)    basePath: ‘‘,

    // frameworks to use    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter    frameworks: [‘jasmine‘],

    // list of files / patterns to load in the browser    files: [        ‘client/bower_components/angular/angular.js‘,        ‘client/bower_components/angular-mocks/angular-mocks.js‘,        ‘client/bower_components/angular-resource/angular-resource.js‘,        ‘client/app/**/*.js‘    ],

    // list of files to exclude    exclude: [    ],

    // preprocess matching files before serving them to the browser    // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor    preprocessors: {    },

    // test results reporter to use    // possible values: ‘dots‘, ‘progress‘    // available reporters: https://npmjs.org/browse/keyword/karma-reporter    reporters: [‘progress‘],

    // web server port    port: 9876,

    // enable / disable colors in the output (reporters and logs)    colors: true,

    // level of logging    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG    logLevel: config.LOG_INFO,

    // enable / disable watching file and executing tests whenever any file changes    autoWatch: true,

    // start these browsers    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher    browsers: [‘Chrome‘],

    // Continuous Integration mode    // if true, Karma captures browsers, runs the tests and exits    singleRun: false  });};

6:在控制台输入命令进行测试

[email protected]:karma-t01$ karma start karma.conf.js 
INFO [karma]: Karma v0.12.32 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 39.0.2171 (Linux)]: Connected on socket CO5e5TAX7Pv9PzqGAAAA with id 34588683
Chrome 39.0.2171 (Linux): Executed 2 of 2 SUCCESS (0.06 secs / 0.048 secs)

提示执行2个测试,成功两个.

7:参考链接

http://bower.io/

http://jasmine.github.io/

http://karma-runner.github.io/0.13/index.html

时间: 2024-10-12 07:12:50

基于Karma和Jasmine的AngularJS测试的相关文章

基于karma和jasmine的Angularjs 单元测试

Angularjs 基于karma和jasmine的单元测试 目录: 1. 单元测试的配置 2. 实例文件目录解释 3. 测试controller     3.1 测试controller中变量值是否正确     3.2 模拟http请求返回值,测试$http服务相关 4. 从文件中读取json,来模拟 http请求返回数据 5. 测试返回promise的service 已经有很多教程提到了angularjs项目的单元测试,但大都不是很全,如一些入门的文章,介绍了测试http service 却

基于Karma 和 Jasmine 的Angular 测试(持续更新中)

最近对前端测试较感兴趣,尤其是Nodejs + Karma + Jasmine 对Angular 的测试.到处看看,做个记录吧,断断续续的更新. <一> 用Jasmine 测试 Angular 的service 1. 先扔代码吧: var app = angular.module('Application', []); app.factory('myService', function(){     var service  = {};     service.one  = 1;     se

Angularjs 基于karma和jasmine的单元测试

目录: 1. 单元测试的配置 2. 实例文件目录解释 3. 测试controller     3.1 测试controller中变量值是否正确     3.2 模拟http请求返回值,测试$http服务相关 4. 从文件中读取json,来模拟 http请求返回数据 5. 测试返回promise的service 已经有很多教程提到了angularjs项目的单元测试,但大都不是很全,如一些入门的文章,介绍了测试http service 却没有介绍如何从文件中读取测试数据来仿真.一些介绍如何从文件中读

结合angularjs,Karma和Jasmine自动化单元测试

前言 在Java领域,Apache, Spring, JBoss 三大社区的开源库,包罗万象,但每个库都在其领域中都鹤立鸡群.而Nodejs中各种各样的开源库,却让人眼花缭乱,不知从何下手. Nodejs领域: Jasmine做单元测试,Karma自动化完成单元测试,Grunt启动Karma统一项目管理,Yeoman最后封装成一个项目原型模板,npm做nodejs的包依赖管理,bower做javascript的包依赖管理. Java领域:JUnit做单元测试, Maven自动化单元测试,统一项目

Karma和Jasmine自动化单元测试——本质上还是在要开一个浏览器来做测试

1. Karma的介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma.Karma是一个让人感到非常神秘的名字,表示佛教中的缘分,因果报应,比Cassandra这种名字更让人猜不透! Karma是一个基于Node.js的JavaScript测试执行过程管理工具(Test Runner).该工具可用于测试所有主流Web浏览器,也可集成到CI(Continuous integration)工具,也可和其他代

Karma和Jasmine自动化单元测试

前言 在Java领域,Apache, Spring, JBoss 三大社区的开源库,包罗万象,但每个库都在其领域中都鹤立鸡群.而Nodejs中各种各样的开源库,却让人眼花缭乱,不知从何下手. Nodejs领域: Jasmine做单元测试,Karma自动化完成单元测试,Grunt启动Karma统一项目管理,Yeoman最后封装成一个项目原型模板,npm做nodejs的包依赖管理,bower做javascript的包依赖管理.Java领域:JUnit做单元测试, Maven自动化单元测试,统一项目管

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈. 端到端测试又简称E2E(End-To-End test)测试,它不同于单元测试侧重于检验函数的输出结果,端到端测试将尽可能从用户的视角,对真实系统的访问行为进行仿真.对于Web应用来说,这意味着需要打开浏览器.加载页面.运行JavaScript,以及进行与DOM交互等操作.

基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头

基于USB3.0的双目相机测试小结之CC1605配合CS5642  双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P031.MT9V034.MT9M001.MT9F002等等 本次测试以CS5642V3摄像头为例,sensor为OV5642 测试分辨率为 1280*720:720p 1280*1024:SXGA 1920*1080:1080p 2048*1024 2048*1536:3M 测试帧率:15fps 一.U

基于Eclipse的Android JNI层测试应用开发过程记录

前言 本文记录一个Java层与JNI层参数与数据交互的应用程序开发过程,为实现一个功能完整的带Java与JNI的应用程序打下基础.本文假设读者已搭建好Android的Eclipse与NDK开发环境,包括通过ADB连接手机的配置. 1. 构建基本的Android应用程序 1.1 引导界面配置 打开Eclipse,"File"->"New"->"Android Application Project",在弹出界面,配置如下(红色框表示不是