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 () { //this will check whether the value of the variable // currentVal is equal to 0 or not. 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() matcher以与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:"it1352", name1:it1352 };
我们将略微修改我们的 expectexam JavaScript文件.我们添加了两个新变量, name 和 name1 .请找出这两个添加变量之间的区别 - 一个是字符串类型,另一个不是字符串类型.
以下屏幕截图是我们的测试结果,其中红叉表示这两个值是不平等的,而预计是平等的.因此我们的测试失败了.
让我们把两者都转变量,名称和 name1 作为字符串类型变量,并再次运行相同的 SpecRunner.html .现在检查输出.它将证明toBe()不仅与变量的等价性匹配,而且还与变量的数据类型或对象类型匹配.
not.toBe()
如前所述,并非只是对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相同,因此该测试用例将有效并通过.