- JasmineJS 教程
- JasmineJS - 主页
- JasmineJS - 概述
- JasmineJS - 环境设置
- JasmineJS - 编写文本和执行
- JasmineJS - BDD 架构
- JasmineJS - 测试构建块
- JasmineJS - 匹配器
- JasmineJS - 跳过块
- JasmineJS - 平等检查
- JasmineJS - 布尔检查
- JasmineJS - 顺序检查
- JasmineJS - 空检查
- JasmineJS - 不平等检查
- JasmineJS - 不是数字检查
- JasmineJS - 异常检查
- JasmineJS - beforeEach()
- JasmineJS - afterEach()
- JasmineJS - 间谍
- JasmineJS 有用资源
- JasmineJS - 快速指南
- JasmineJS - 有用的资源
- JasmineJS - 讨论
JasmineJS - 异常检查
除了不同的计算匹配器之外,Jasmine 还提供了一些有用的匹配器来检查程序的异常。让我们使用以下代码集修改 JavaScript。
var throwMeAnError = function() { throw new Error(); }; describe("Different Methods of Expect Block", function() { var exp = 25; it ("Hey this will throw an Error ", function() { expect(throwMeAnError).toThrow(); }); });
在上面的示例中,我们创建了一个方法,该方法故意从该方法引发异常,并且在 Expect 块中我们期望捕获错误。如果一切顺利,那么这段代码将产生以下输出。
现在,为了让这个测试用例失败,我们需要省略函数throwMeAnError中的 throw 语句。以下代码将生成红色屏幕截图作为输出,因为该代码不满足我们的要求。
var throwMeAnError = function() { //throw new Error(); }; describe("Different Methods of Expect Block",function() { var exp = 25; it("Hey this will throw an Error ", function() { expect(throwMeAnError).toThrow(); }); });
可以看出,我们已经对方法抛出异常的那一行进行了注释。以下是成功执行 SpecRunner.html 时上述代码的输出。
茉莉花.Any()
Any是当我们不确定输出时使用的特殊匹配器。在下面的示例中,我们将了解其工作原理。让我们使用以下代码修改customerMatcher.js 。
var addAny = function() { var sum = this.currentVal; for (var i = 0; i < arguments.length; i++) { sum += arguments[i]; } this.currentVal = sum; return this.currentVal; } describe("Different Methods of Expect Block",function () { it("Example of any()", function() { expect(addAny(9,9)).toEqual(jasmine.any(Number)); }); });
在这里,我们声明了一个函数,它将为我们提供作为参数提供的数字的总和。在expect块中,我们期望结果可以是任何东西,但它应该是一个数字。
由于总和后的 9 和 9 都为 18,因此该测试将通过,并将生成以下绿色屏幕截图作为输出。
现在让我们根据以下代码更改代码,其中我们期望字符串类型变量作为函数AddAny()的输出。
var addAny = function() { var sum = this.currentVal; for(var i = 0; i < arguments.length; i++) { sum += arguments[i]; } this.currentVal = sum; return this.currentVal; } describe("Different Methodsof Expect Block",function () { it("Example of any()", function () { expect(addAny(9,9)).toEqual(jasmine.any(String)); }); });
以下是上述代码的输出。