使用Jasmine测试你的Javascript(二)之 Suites和specs
2012-11-14 16:20
411 查看
接下来我们开始进一步的了解Jasmine,让我们熟悉一下Jasmine测试用列的基本语法结构。
Specs
每个spec都是一个Javascript函数,在这里可以认为就是一个测试的主体,specs用jasmine的全局方法it() 来定义,它包含了两个参数,一个string,一个function,string用来描述spec的行为,它应该是有意义的,这样以便于你在之后阅读你的测试报告 .如下代码定义了一个Spec。
it('Student must defined', function () { var foo = 0; foo++; });
Expectations
Expectations在jasmine就相当于一个断言,在一个spec中你将使用它来断言你的代码表达式是否成立,expectations使用 expect() 方法定义。在一个spec中,只有当所有的expectations全被为true时,该spec才显示为通过,否则该spec失败。
it('should increment a variable', function () { var foo = 0; foo++; expect(foo).toEqual(1); });
当你运行spec之后,该expectation的结果将会反馈给你,反馈的结果将会类似如下这样。你也可以通过本文上方红色链接进入jasmine的在线尝试。
1 spec, 0 failures in 0.277sFinished at Wed Nov 14 2012 15:01:40 GMT+0800 (China Standard Time)
runJasmine
runshould increment a variable
Suites
多个Specs被组织在Suites中.,相当于specs的合集Suites 使用全局方法describe()定义,它包含两个参数,一个string,一个function,string用来描述该suite,也请确保它是有意义的,因为它将在运行结束的报告中显示以助于你分析相应Cases, 而function中的内容就是suites的合集。
describe('Calculator', function () { it('can add a number', function () { ... }); it('can multiply some numbers', function () { ... }); });
一个suite中的specs共享同一个函数作用域,所以你在一个suite中声明的变量可以被所有specs访问,代码如下
describe('Calculator', function () { var counter = 0 it('can add a number', function () { counter = counter + 2; // counter was 0 before expect(counter).toEqual(2); }); it('can multiply a number', function () { counter = counter * 5; // counter was 2 before expect(counter).toEqual(10); }); });
注意上面的代码只在describe( )函数上执行一次,这就是为什么counter没有重置为0。如果你想在第二个spec(can multiply a number)中将counter重置,请使用beforeEach( )函数。
嵌套 Describes
Jasmine支持嵌套describes.代码如下describe('some suite', function () { var suiteWideFoo; beforeEach(function () { suiteWideFoo = 0; }); describe('some nested suite', function() { var nestedSuiteBar; beforeEach(function() { nestedSuiteBar=1; }); it('nested expectation', function () { expect(suiteWideFoo).toEqual(0); expect(nestedSuiteBar).toEqual(1); }); }); it('top-level describe', function () { expect(suiteWideFoo).toEqual(0); expect(nestedSuiteBar).toEqual(undefined); // Spec will fail with ReferenceError: nestedSuiteBar is not undefined }); });
禁用Tests & Suites
如果你想禁止Specs的运行,你可以用xit( )代替it( ). 如果你想禁止Suites的运行你可以用xdescribe()代替describe() 。.
相关文章推荐
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- 使用Jasmine测试你的Javascript(三)之 Matchers
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- 使用Jasmine测试你的Javascript(一)之 Jasmine简介
- 使用 Jasmine 进行测试驱动的 JavaScript 开发
- 使用 Jasmine 进行测试驱动的 JavaScript 开发
- javascript测试框架qunit的使用
- 如何使用 QUnit 进行 JavaScript 单元测试
- Javascript测试框架Jasmine(一):简介
- 【转帖】使用JsUnit和JSMock的JavaScript测试驱动开发
- Javascript测试框架Jasmine(二):Matchers
- 在浏览器的地址栏位置, 使用javascript:输入一个表达式来测试.
- Javascript测试框架Jasmine(三):Setup、Teardown、嵌套describe等
- JavaScript测试工具比较: QUnit, Jasmine, and Mocha
- 使用console的高级应用来测试javascript性能(实测)
- 使用QUnit 框架测试Javascript代码
- 安装和使用Karma-Jasmine进行自动化测试
- 使用Karma运行JavaScript测试
- Javascript测试框架Jasmine(四):自定义Matcher