jasmine
Specs
Spec表示测试用例,以it(string, function)
函数封装,它也包含2个参数:string
:测试用例名称,function
:测试用例函数。
Expectations
Expectation就是一个断言,以expect
语句表示,返回true
或false
。expect
语句有1个参数,代表要测试的实际值(the actual)。
只有当一个Spec中的所有Expectations全为ture
时,这个Spec才通过,否则失败。
Expectation带实际值,它和表示匹配规则的Matcher链接在一起,Matcher带有期望值。
Matchers
Matcher实现了断言的比较操作,将Expectation传入的实际值和Matcher传入的期望值比较。
任何Matcher都能通过在expect
调用Matcher前加上not
来实现一个否定的断言(expect(a).not().toBe(false);
)。
常用的Matchers有:
- toBe():相当于
===
比较。 - toNotBe()
- toBeDefined():检查变量或属性是否已声明且赋值。
- toBeUndefined()
- toBeNull():是否是
null
。 - toBeTruthy():如果转换为布尔值,是否为
true
。 - toBeFalsy()
- toBeLessThan():数值比较,小于。
- toBeGreaterThan():数值比较,大于。
-
toEqual():相当于
==
,注意与toBe()
的区别。
一个新建的Object不是(not to be)另一个新建的Object,但是它们是相等(to equal)的。expect({}).not().toBe({}); expect({}).toEqual({});
- toNotEqual()
- toContain():数组中是否包含元素(值)。只能用于数组,不能用于对象。
-
toBeCloseTo():数值比较时定义精度,先四舍五入后再比较。
it("The 'toBeCloseTo' matcher is for precision math comparison", function() { var pi = 3.1415926, e = 2.78; expect(pi).not.toBeCloseTo(e, 2); expect(pi).toBeCloseTo(e, 0); });
- toHaveBeenCalled()
- toHaveBeenCalledWith()
- toMatch():按正则表达式匹配。
- toNotMatch()
-
toThrow():检验一个函数是否会抛出一个错误