JavaScript测试框架Jasmine

jasmine是一个用来编写Javascript测试的BDD(Behavior-driven development 行为驱动开发框架)开发框架,它不依赖于任何其它的javascript框架。它有拥有灵巧而明确的语法可以让你轻松的编写测试代码。目前最新的版本为2.0.0。


下载

在Jasmine的Github官方主页:https://github.com/jasmine/jasmine
找到上方的releases,点击会跳转到https://github.com/jasmine/jasmine/releases
下载已发布的zip包,比如下载当前(2015-03-09)的最新版本为:jasmine-standalone-2.2.0.zip
目录结构

解压之后,可以看到有1个html文件和3个文件夹。

  • lib:存放了运行测试案例所必须的文件,其内包含jasmine-2.2.0文件夹。可以将不同版本的Jasmine放在lib下,以便使用时切换。
  • jasmine.js:整个框架的核心代码。
  • jasmine-html.js:用来展示测试结果的js文件。
  • boot.js:jasmine框架的的启动脚本。需要注意的是,这个脚本应该放在jasmine.js之后,自己的js测试代码之前加载。
  • jasmine.css:用来美化测试结果。
  • spec:存放测试脚本。
  • PlayerSpec.js:就是针对src文件夹下的Player.js所写的测试用例。
  • SpecHelper.js:用来添加自定义的检验规则,如果框架本身提供的规则(诸如toBe,toNotBe等)不适用,就可以额外添加自己的规则(在本文件中添加了自定义的规则toBePlaying)。
  • src:存放需要测试的js文件。Jasmine提供了一个Example(Player.js,Song.js)。
  • SpecRunner.html:运行测试用例的环境。它将上面3个文件夹中一些必要的文件都包含了进来。如果你想将自己的测试添加进来的话,那么就修改相应的路径。
    其中,spec文件夹,src文件夹和SpecRunner.html文件是Jasmine提供的一个完整示例,用浏览器打开 - SpecRunner.html,即可看到执行的结果。

如何写测试代码

在jasmine中,一个典型的单元测试起始于一个全局函数describe,describe包含了N个it函数,一个it函数包含N个断言。
一个基本的测试代码如下:https://blog.csdn.net/wang124454731/article/details/53246640

describe("A suite", function() {
  it("contains spec with an expectation", function() {
    expect(true).toBe(true);
  });
});

Suite表示一个测试集,以函数describe(string, function)封装,它包含2个参数:
string:测试组名称,
function:测试组函数。
一个Suite(describe)包含多个Specs(it),一个Specs(it)包含多个断言(expect)。一个it中的所有expect success,整个it才success;一个expect失败,整个it测试失败

关键字解释

参考:https://www.cnblogs.com/zhcncn/p/4330112.html

  • beforeAll 所有测试用例调用前,进行全局变量的初始化
  • afterAll所有测试用例调用后,进行全局变量的重置。
  • beforeEach 每个测试用例执行前,进行特定的变量的初始化。
  • afterEach每个测试用例执行后,进行特定的变量的重置。
  • describe定义测试用例it集合
  • it 定义单个测试用例
  • expect期望,返回Matcher,断言测试用例执行是否成功
  • spyOn 进行service、component function的proxy代理,it运行时,替代对应的业务逻辑,进行黑盒测试,保证代码功能完整性。

使用jasmine

1.安装jamine
2.初始化jasmine
3.创建测试文件

在根目录下创建一个待测试文件

hello.js
module.exports = function () {
    return 'hello';
};

在spec目录下创建一个测试文件

helloSpec.js
var hello = require('../hello');

describe("A suite", function () {
    it("contains spec with an expectation", function () {
        expect(hello()).toBe("hello");
    });
});

4.执行测试文件.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容