JasmineJS - 平等检查
Jasmine 提供了大量方法,可帮助我们检查任何 JavaScript 函数和文件的平等性。以下是一些检查平等条件的示例。
ToEqual()
ToEqual() 是 Jasmine 内置库中最简单的匹配器。它只是匹配作为此方法的参数给出的操作结果是否与其结果匹配。
以下示例将帮助您了解此匹配器的工作原理。我们有两个要测试的文件,名为 "expectexam.js",另一个需要测试的文件是 "expectSpec.js"。
Expectexam.js
window.expectexam = { currentVal: 0, };
ExpectSpec.js
describe("Different Methods of Expect Block",function () { it("The Example of toEqual() method",function () { //这将检查变量 // currentVal 的值是否等于 0。 expect(expectexam.currentVal).toEqual(0); }); });
成功执行后,这些代码片段将产生以下输出。请记住,您需要按照前面的示例指示,将这些文件添加到 specRunner.html 文件的标头部分。
not.toEqual()
not.toEqual() 的作用与 toEqual() 完全相反。当我们需要检查值是否与任何函数的输出不匹配时,使用 not.toEqual()。
我们将修改上述示例以展示其工作原理。
ExpectSpec.js
describe("Different Methods of Expect Block",function () { it("The Example of toEqual() method",function () { expect(expectexam.currentVal).toEqual(0); }); it("The Example of not.toEqual() method",function () { //negation testing expect(expectexam.currentVal).not.toEqual(5); }); });
Expectexam.js
window.expectexam = { currentVal: 0, };
在第二个 expect 块中,我们检查 currentVal 的值是否等于 5,因为 currentVal 的值为零,因此我们的测试通过并为我们提供了绿色输出。
ToBe()
toBe() 匹配器的工作方式与 toEqual() 类似,但它们在技术上彼此不同。toBe() 匹配器与对象的类型匹配,而 toEqual() 与结果的等价性匹配。
以下示例将帮助您了解 toBe() 匹配器的工作原理。此匹配器与 JavaScript 的"==="运算符完全等同,而 toEqual() 类似于 JavaScript 的"==="运算符。
ExpectSpec.js
describe("Different Methods of Expect Block",function () { it("The Example of toBe() method",function () { expect(expectexam.name).toBe(expectexam.name1); }); });
Expectexam.js
window.expectexam = { currentVal: 0, name:"tutorialspoint", name1:tutorialspoint };
我们将稍微修改我们的 expectexam JavaScript 文件。我们添加了两个新变量,name 和 name1。请找出这两个添加的变量之间的区别 - 一个是字符串类型,另一个不是字符串类型。
以下屏幕截图是我们的测试结果,其中红叉表示这两个值不相等,而预期它们应该相等。因此我们的测试失败。
让我们将两个变量 name 和 name1 转换为字符串类型变量,然后再次运行相同的 SpecRunner.html。现在检查输出。它将证明 toBe() 不仅与变量的等价性匹配,而且还与变量的数据类型或对象类型匹配。
not.toBe()
如前所述,not 只不过是 toBe() 方法的否定。当预期结果与函数或 JavaScript 文件的实际输出匹配时,它会失败。
以下是一个简单的示例,可帮助您了解 not.toBe() 匹配器的工作原理。
describe("Different Methods of Expect Block",function () { it("The Example of not.toBe() method",function () { expect(true).not.toBe(false); }); });
此处 Jasmine 将尝试将 true 与 false 进行匹配。由于 true 不能与 false 相同,因此此测试用例将有效并通过。