使用Jasmine测试你的Javascript(三)之 Matchers
2012-11-14 17:25
507 查看
使用Jasmine测试你的Javascript(一)之 Jasmine简介
使用Jasmine测试你的Javascript(二)之 Suites和specs
通过前两篇我们已经基本可以简单的用jasmine写出一段测试代码,本篇我们将来继续介绍jasmine中的matchers。Jasmine提供了一些内置的matchers(匹配器)供你使用,下面有几个是你会经常用到的。
expect(x).toEqual(y);当x和y相等时候通过
expect(x).toBe(y);当x和y是同一个对象时候通过
expect(x).toMatch(pattern);x匹配pattern(字符串或正则表达式)时通过
expect(x).toBeDefined();x不是undefined时通过
expect(x).toBeUndefined();
x是
undefined时通过
expect(x).toBeNull();
x是null时通过
expect(x).toBeTruthy();x和true等价时候通过
expect(x).toBeFalsy();x和false等价时候通过
expect(x).toContain(y);x(数组或字符串)包含y时通过
expect(x).toBeLessThan(y);x小于y时通过
expect(x).toBeGreaterThan(y);x大于y时通过
expect(function(){fn();}).toThrow(e);函数fn抛出异常时候通过
旧版本中的一些matchers(匹配器)
toNotEqual,
toNotBe,
toNotMatch,
toNotContain将在以后被废除.建议使用
not.toEqual,
not.toBe,
not.toMatch, and
not.toContainrespectively.
所有的matchers匹配器支持添加
.not反转结果:
expect(x).not.toEqual(y);
自定义Matchers(匹配器)
以上提供的Matchers(匹配器)已经可以满足你的大部分需求了,但是我们仍然推荐你按照需求定义自己的匹配器去匹配更加复杂的情况,自定义匹配器可以使你的代码意图更加明了,并且可以帮你移除重复的代码。
自定义(matchers)匹配器是一件很简单的事件,一个matcher(匹配器)函数使用 this.actual 接收到一个实际值,并且该匹配函数也可以包括0或多个参数。当实际值通过匹配器的匹配,你应当返回一个ture否则返回false。
以下代码定义了一个名为
toBeLessThan()的匹配器:
toBeLessThan: function(expected) { return this.actual < expected; };
将匹配器添加到suite中, 在before或者it代码块内调用
this.addMatchers()
beforeEach(function() { this.addMatchers({ toBeLessThan: function(expected) { return this.actual < expected; } }); });
你可以自定义匹配失败的消息,在匹配函数中给this.message赋值即可实现
beforeEach(function() { this.addMatchers({ toBeLessThan: function(expected) { var actual = this.actual; var notText = this.isNot ? " not" : ""; this.message = function () { return "Expected " + actual + notText + " to be less than " + expected; } return actual < expected; } }); });
相关文章推荐
- 使用 Jasmine 进行测试驱动的 JavaScript 开发
- 使用Jasmine测试你的Javascript(二)之 Suites和specs
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- JavaScript测试工具之Karma-Jasmine的安装和使用详解
- 使用Jasmine测试你的Javascript(一)之 Jasmine简介
- Javascript测试框架Jasmine(二):Matchers
- 使用 Jasmine 进行测试驱动的 JavaScript 开发
- javascript测试回答错误,基础提高,经常使用。不常用,也看看。
- 前端测试框架 jasmine 的使用
- 【转帖】使用JsUnit和JSMock的JavaScript测试驱动开发
- Javascript测试框架Jasmine(五):Spies
- Javascript测试框架Jasmine(六):异步代码测试
- JavaScript测试框架Jasmine学习(一)
- 使用 Jasmine 测试 Node 项目
- 安装和使用Karma-Jasmine进行自动化测试
- javascript测试框架qunit的使用
- [转 js] 使用JsUnit和JSMock的JavaScript测试驱动开发
- Javascript测试框架Jasmine(七):jqPaginator测试实例
- 使用console的高级应用来测试javascript性能(实测)