首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 MEAN 测试 MEAN 堆栈(4)

精通 MEAN 测试 MEAN 堆栈(4)

理解 karma.conf.js在文本编辑器中打开 karma.conf.js,如清单 3 所示。在该文件中,您会找到清晰标识的                frameworks、files、reporters 和                browsers 设置。
清单 3. karma.conf.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
'use strict';

/**
* Module dependencies.
*/
var applicationConfiguration = require('./config/config');

// Karma configuration
module.exports = function(config) {
    config.set({
        // Frameworks to use
        frameworks: ['jasmine'],

        // List of files / patterns to load in the browser
        files: applicationConfiguration.assets.lib.js.concat(applicationConfiguration.assets.js,
        applicationConfiguration.assets.tests),

        // Test results reporter to use
        // Possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
        //reporters: ['progress'],
        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, currently available:
        // - Chrome
        // - ChromeCanary
        // - Firefox
        // - Opera
        // - Safari (only Mac)
        // - PhantomJS
        // - IE (only Windows)
        browsers: ['PhantomJS'],

        // If browser does not capture in given timeout [ms], kill it
        captureTimeout: 60000,

        // Continuous Integration mode
        // If true, it capture browsers, run tests and exit
        singleRun: true
    });
};




返回查看 package.json。在该文件中,您可以在 devDependencies 块中找到各个 Karma                插件的相应条目:
1
2
3
4
5
6
7
8
9
10
"devDependencies": {
  // snip

  "karma": "~0.12.0",
  "karma-jasmine": "~0.2.1",
  "karma-coverage": "~0.2.0",
  "karma-chrome-launcher": "~0.1.2",
  "karma-firefox-launcher": "~0.1.3",
  "karma-phantomjs-launcher": "~0.1.2"
}




因为所有搭建的客户端测试都是在 Jasmine 中编写的,所以推荐保留 frameworks                数组原封不动。但您在本节后面将会看到,您可以轻松地随意添加和删除浏览器。
PhantomJS 简介如果您是 Web 开发人员,但不熟悉 PhantomJS 浏览器,那么您需要补上这一课。PhantomJS 是最适合 Web 测试人员的工具之一。
用户很容易受到欺骗,将 Web 浏览器视为某个具有熟悉的品牌名称的庞大应用程序:Firefox、Chrome、Safari、Opera 和                Internet Explorer。这些品牌名称只是描述一个特定的技术集合的方便方式,这些技术包括渲染引擎(针对 HTML 和                CSS)、脚本引擎(针对 JavaScript)和插件子系统。
“如果您是一位经验丰富的 MEAN                    开发人员,您一定非常熟悉从来浏览器中分离出组件并无头地运行它们。您应该能够自在地运行一个无头的渲染包来进行测试。 ”

将浏览器视为一个松散的渲染工具包和脚本引擎集合时,您将拥有全新的理解。例如,在上世纪 90 年代发布 2.0 版时,Netscape                Navigator 浏览器拥有超过 90% 的市场份额。IE 在几年后接过了市场领导地位。但在最近几年,一个渲染包( )而不是浏览器获得了大部分市场份额。因为在最近(参阅                  边栏),WebKit 支持着 Safari、Mobile Safari、Chrome、Android 浏览器、BlackBerry                浏览器、Kindle 设备、PlayStation、三星智能电视、LG                智能电视、松下智能电视等。尽管这些应用程序和设备由不同的公司和项目组装,但它们使用一个通用的渲染包来显示 HTML 和使用 CSS 设置其样式。
当 WebKit 遇上 Blink Google 在 2013 年引起了轰动,它宣布它正在分解 WebKit 项目,创建一个名为 Blink                    的独立的渲染包。之后不久,Opera 宣布它将停止开发其自定义渲染包,而采用 Blink。(这个                      显示了所有主要浏览器的底层渲染包、)
Apple 最初,在 2005 年,从 KHTML 渲染引擎中分解了 WebKit,它继续在开发和维护该项目。(参阅 Wikipedia 中的                      条目,了解有关的更多信息。)

那么,这与 PhantomJS 有什么关系?PhantomJS 的网站告诉我们:
PhantomJS 是一个可使用 JavaScript API 编写脚本的无头 WebKit。
无头服务不需要监视器或 GUI。这听起来非常适合在无监视器的持续集成服务器撒谎能够运行基于浏览器的单元测试,对吧?(  项目提供了类似的功能:运行一个无头的 Gecko                渲染包来测试在 Firefox 浏览器中发生的页面渲染。)
如果您是一位经验丰富的 MEAN 开发人员,您一定非常熟悉从来浏览器中分离出组件并无头地运行它们:Node.js 是 Google Chrome                的以无头方式运行的脚本引擎 (V8)。您应该能够自在地运行一个无头的渲染包来进行测试。
让我们回过头来看看 karma.conf.js,可以在 browsers 数组中看到 PhantomJS。现在您已经理解所有                Jasmine 客户端测试可以如何在浏览器中运行并通过,而不会看到启动 GUI。
配置 Karma 来启动更多浏览器Karma 为所有主要浏览器都提供了启动器。如果回过头来查看 package.json 的                devDependencies 块,就可以看到已为 Firefox 和 Chrome                安装了启动器。如果您在计算机中安装了这些浏览器,可将它们添加到 karma.conf.js 中的 browsers                数组中,键入 grunt test 来在新添加的浏览器中运行您的测试套件。
您可以访问   并搜索 karma launcher                来查看所有支持的浏览器列表。可以键入                npm install karma-xxx-launcher --save-dev                来安装每个启动器并将它添加到 package.json 中。启动器安装后,将它添加到 karma.conf.js 中的                browsers 数组中并重新运行您的测试。
捕获无法启动的浏览器Karma 启动器通常用于启动位于同一个计算机上的浏览器。回想一下,Karma 还可以用于在远程浏览器上运行测试 —                想想智能电话、平板电脑和智能电视。任何支持 Web 套接字的浏览器都可由 Karma 捕获并用作测试目标。
要捕获一个远程浏览器,首先必须让 Karma 服务器在执行不同测试的间隙正常运行。要保持 Karma 服务器永久地正常运行,可在                karma.conf.js 中将 singleRun 值更改为 false:
1
2
3
// Continuous Integration mode
// If true, it capture browsers, run tests and exit
singleRun: true




如果重新启动 Karma 服务器或任何捕获的浏览器,它们会尝试重新连接和重新运行所有测试。
现在 Karma 服务器已在正常运行,可以在远程浏览器中通过 URL http://您服务器的 IP 地址:9876                访问它。这就是使用 Karma 捕获无法启动的浏览器的全过程。
返回列表