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.执行测试文件.